面向对象编程学习第一天
关键字:类,对象,成员变量,方法,构造方法,方法重载,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(); } }