码迷,mamicode.com
首页 > 其他好文 > 详细

面向对象编程学习第一天

时间:2015-03-22 01:44:28      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:

关键字:类,对象,成员变量,方法,构造方法,方法重载,this,static

1.对象和类的概念

  技术分享

  类:包含成员变量,方法

  对象:设置成员变量,调用方法(对象.方法名)

  成员变量 = 属性,方法 = 函数。

2.类的定义

  用class关键字定义一个类

  声明成员变量,静态变量用static

  静态变量无需new对象,直接类名.静态变量名 引用

  声明方法(),有返回值,无返回值。

3.对象的创建和使用

  使用new关键字创建对象

  引用成员变量:对象名.成员变量

  引用方法:对象名.方法()括号里面是参数

4.方法

  形参:

  实参:调用方法时实际传给方法的数据 

  返回值:方法执行完毕return给调用它的环境的数据

  返回值类型:事先约定的返回值类型,如无返回值,方法的返回值类型应定义为void

  调用方法:对象名.方法名(参数列表)

  return终止方法的运行

5.构造方法

  构造方法也叫构造函数,用于初始化对象

  构造方法与类同名且没有返回值

  使用new+构造方法(参数)创建一个新的对象

  当没有指定构造方法时,编译器自动添加如类名(){}的构造函数

6.方法重载

  一个类中相同名字,不同参数(类型,数量)的多个方法,调用时根据参数选择对应方法

  构造方法也可以重载

  浮点数默认为double类型,数字后加F可以强制转换为float类型

7.this关键字

  this指向自身,this.变量名 指的是当前对象的变量名

8.static关键字

  static限定符声明的成员变量为静态成员变量

  static成员变量为该类的公用变量,static成员变量只有一份

  static成员变量不需要new新的对象也可以使用

  使用类名.成员变量名即可访问static成员变量(不需要实例化)

 

相关代码:

构造方法

Person.java

public class Person{
    int id;
    int age;
    Person(int _id,int _age){
        id = _id;
        age = _age;
    }
    Person p = new Person(1,5);
}

 

 

对象的创建和修改

class BirthDate{
    private int day;
    private int month;
    private int year;
    
    public BirthDate(int d, int m, int y){
        day = d;
        month = m;
        year = y;
    }
    
    public void setDay(int d){
        day = d;
    }
    
    public void setMonth(int m){
        month = m;
    }
    
    public void setYear(int y){
        year = y;
    }
    
    public int getDay(){
        return day;
    }
    
    public int getMonth(){
        return month;
    }
    
    public int getYear(){
        return year;
    }

    public void display(){
        System.out.println(day+"-"+month+"-"+year);
    }
}

public class Test{
    public static void main(String args[]){
        Test test = new Test();
        BirthDate d1 = new BirthDate(1,1,2001);
        test.changer(d1);
        d1.display();
    }
    public void changer(BirthDate d){
        d.setDay(2);
        d.setMonth(2);
        d.setYear(2002);
    }
}

 

方法的引用

TestPoint.java

class Point{
    private int x;
    private int y;
    private int z;
    
    Poin t(int a,int b,int c){
        x = a;
        y = b;
        z = c;
    }
    
    public void setX(int a){
        x = a;
    }
    
    public void setY(int b){
        y = b;
    }
    
    public void setZ(int c){
        z = c;
    }
    
    public void display(){
        System.out.println(x+""+y+""+z);
    }
}

public class TestPoint{
    public static void main(String args[]){
        TestPoint testPoint = new TestPoint();
        Point p1 = new Point(1,1,1);
        Point p2 = new Point(2,2,2);
        
        testPoint.changer(p1);
        p1.display();
        p2.display();
        

    }
    public void changer(Point p){
        p.setX(3);
        p.setY(3);
        p.setZ(3);
    }
}

 

 

This的使用

public class TestThis{
    int i = 1;
    TestThis(int i){
        this.i = i;
    }
    TestThis increment(){
        i++;
        return this;
    }
    
    void print(){
        System.out.println(i);
    }
    
    public static void main(String args[]){
        TestThis leaf = new TestThis(100);
        leaf.print();
        leaf.increment().increment().print();
        
    }
}

 

 

TestCircle.java

class Point{
    private double x;
    private double y;
    Point(double _x,double _y){
        x = _x;
        y = _y;
    }
    
    public void setX(double i){
        x = i;
    }
    public double getX(){
        return x;
    }
    
    public void setY(double i){
        y = i;
    }
    public double getY(){
        return y;
    }
    
}

class Circle{
    Point o;
    double radius;
    
    Circle(Point p,double r){
        o = p;
        radius = r;
    }
    Circle(double r){
        o = new Point(1.0,1.0);
        radius = r;
    }
    
    public void setO(double _x,double _y){
        o.setX(_x);
        o.setY(_y);
    }
    public Point getO(){
        return o;
    }
    
    public void setRadius(double r){
        radius = r;
    }
    public double getRadius(){
        return radius;
    }
    
    public double area(){
        return radius * 3.14 * 3.14;
    }
    
    boolean contains(Point p){
        double x = p.getX() - o.getX();
        double y = p.getY() - o.getY();
        if(x*x + y*y > radius) return false;
        else return true;
    }
}

public class TestCircle{
    public static void main(String args[]){
        Circle c1 = new Circle(new Point(2.0,3.0),1.0);
        Circle c2 = new Circle(5.0);
        
        System.out.println("c1"+c1.o.getX()+""+c1.o.getY()+""+c1.radius);
        //System.out.println("c1"+c1.getO().getX()+""+c1.getO().getY()+""+c1.radius);
        System.out.println("c2"+c2.o.getX()+""+c2.o.getY()+""+c2.radius);
        System.out.println("c1 area" + c1.area());
        System.out.println("c1 area" + c2.area());
        
        double r1 = 6;
        c1.setO(5.0,6.0);
        c1.setRadius(++r1);
        c2.setRadius(3.0);
        
        System.out.println("c1"+c1.o.getX()+""+c1.o.getY()+""+c1.radius);
        //System.out.println("c1"+c1.getO().getX()+""+c1.getO().getY()+""+c1.radius);
        System.out.println("c2"+c2.o.getX()+""+c2.o.getY()+""+c2.radius);
        System.out.println("c1 area" + c1.area());
        System.out.println("c1 area" + c2.area());
        
        Point p = new Point(5.2,6.3);
        System.out.println(c1.contains(p));
        System.out.println(c2.contains(p));
    }
}

 

 

static的使用

public class Cat{
    public static int sid = 0;
    public int id;
    public String name;
    
    Cat(String name){
        this.name = name;
        id = sid++;
    }
    
    
    void print(){
        System.out.println(id+""+name);
    }
    
    public static void main(String args[]){
        Cat.sid = 100;
        Cat mimi = new Cat("mimi");
        Cat pipi = new Cat("pipi");
        mimi.print();
        pipi.print();
    }
}

 

面向对象编程学习第一天

标签:

原文地址:http://www.cnblogs.com/qiantianyu/p/4356625.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!