//写代码一定要保存,不然总是会报错,还查不出来,切记!当保存成为习惯就没有这个问题了 * 面向对象:三大特点(封装,继承,多态),。这只是面向对象的,java的特点有很多,可移植,健壮, * * * 在多个对象中抽象出来的叫类 * return 就是一个程序的结束,后面跟的逻辑都是无意义的,main是开始 * 但程序进入main之前会先找static 然后把带有static的方法和变量放到静态池 静态池是在方法之前编译 * * 生物:动物 植物 细胞 对于动植物来说 生物就是类 类下面有三种对象 * * 对象是类的实例 是一类事物的具体体现 * * 在类中的位置不同 * 成员变量:类中,方法外 * 局部变量:方法中 * 作用范围不一样 * 成员变量:类中 * 局部变量:方法中 * 初始化值的不同 * 成员变量:有默认值 * 局部变量:没有默认值。必须先定义,赋值, * 生命周期不同 * 成员变量:随着对象的创建而存在,随着对象的消失而消失 * 局部变量:随着方法的调用而存在,随着方法的调用完毕而消失 * * 属性:成员变量:事物的状态信息 * 方法: 成员方法:对应事物的行为 * * 类的使用 方法的命名:修饰符 + 返回值类型 +方法名(数据类型 ){ } 类的命名: 修饰符 + +方法名 ( ) { } 变量 : 修饰符 + 变量名 JavaBean是类的规范 :必须是具体的,公共的 具有无参构造();写了有参,若不写无参,默认无参就不在生效 java中构造方法指的是:与类名相同,无返回类型的方法,参数可以为空,也可以带参数。 比如一个 Point 类,private Point(){}这个就是无参数的构造方法。 private Dao(int x0, int y0){}这个就是带参数的构造方法。 作用:用来初始化 java 类,提供类的初始化和实例化,即可以通过new来创建对象以便调用。 如果想在实例化对象的时候就为这个属性赋值的话,可以通过有参构造实现。 public:对所有类可见 protected:对同一包中的类可见、对同一包及不同包中的子类可见 default:对同一包中的类可见、对同一包中的子类可见 private:仅对类本身可见 封装 修饰成员变量被 private修饰后的成员变量和成员方法,只在本类中才能访问 可见是可访问的意思,即由这些修饰符修饰的成分(类、方法、成员变量)可以被其它类 访问。对子类可见即子类可以继承。 这里需要注意的是protected与default,二者的区别在于不同包中的子类是否可以继承。 封装的构造方法 修饰符 当前类名(参数列表){ // 方法体     } public class Animal(){ //创建一个类 private int num; //定义两个私有变量 private String name; public Animal(){ //构建无参 } public Animal(int num,String name){ //构建有参 this.num=num; this.name=nume } public int getNum(int num){ return num; } public void setNum(){ this.num=num; } public void cont(){ //创建方法 } } public class Cat (){ public static void main (String [] args){ } public String getName(){ //Animal类的句柄 miao是类的对象 new Animal() :Animal类的空间 Animal miao=new Animal(); //创建一个Animal对象 miao 需要用到无参构造 miao.setNum(" mao111"); //私有后的赋值 不私有可直接调用 miao.num=45; //调用的三种形式:直接调用,赋值调用 输出调用 类中 : 方法名直接调用 赋值调用:int sum =getSum(5,6);使用有参构造 输出调用:syso("有返回值得方法名()"); 重载:同一个类, 方法名相同 型参不同 重写:子类重写父类中的抽象方法,声明完全一样,增加方法体;子类重写方法权限(public 等 )必须大于父类 子类初始化,默认先初始化父类的构造super();父类构造 super父类的引用 this没有继承关系也有本类引用的意义 object 是所有类的爸爸 this.成员变量 this.成员方法 本类的成员变量和方法 子类重写父类的构造,实例的调用就可以用父类的构造 若想使用子类的,还有重载,再次构造一个生成器 super() this() 都必须在第一行 继承只能单继承 但clss A{ class B extends A{ class C extends B{ } } } 这样多层继承就可以解决单一继承的缺点 abstract 抽象方法 的关键字,但接口的抽象类可以省略 } } java中四种访问修饰符 Java中的四种访问修饰符:public、protected、default(无修饰符,默认)、private。 •四种修饰符可修饰的成分(类、方法、成员变量) public protected default private 类 √ × √ × 方法 √ √ √ √ 成员变量 √ √ √ √ •四种修饰符的访问权限 public:对所有类可见 protected:对同一包中的类可见、对同一包及不同包中的子类可见 default:对同一包中的类可见、对同一包中的子类可见 private:仅对类本身可见 可见是可访问的意思,即由这些修饰符修饰的成分(类、方法、成员变量)可以被其它类访问。对子类可见即子类可以继承。 这里需要注意的是protected与default,二者的区别在于不同包中的子类是否可以继承。 访问权限 类 同一包 同一包中的子类 不同包中的子类 不同包 public √ √ √ √ √ protected √ √ √ √ × default √ √ √ × × private √ × × × × •例如 package1:ParentClass、ChildClassOne、TestOne package2:ChildClassTwo、TestTwo package3:TestThree 其中ParentClass为 public class ParentClass { public int a=2; protected int b = 3; int c = 4; private int d = 5; }   1.对于TestOne来说,ParentClass类、a、b、c均可见,d不可见。即在TestOne中可以new一个ParentClass对象,且该对象中的a,b,c变量可操作。如下: public class TestOne { public static void main(String args[]) { ParentClass obj = new ParentClass(); System.out.println(obj.a); System.out.println(obj.b); System.out.println(obj.c); // System.out.println(obj.d); //d 不可见 } }   2. ChildClassOne继承ParentClass且与其在同一个包中,则a、b、c均可见,d不可见。 public class ChildClassOne extends ParentClass{ public static void main(String args[]) { ChildClassOne obj = new ChildClassOne(); System.out.println(obj.a); System.out.println(obj.b); System.out.println(obj.c); // System.out.println(obj.d); // d不可见 } }   3. ChildClassTwo继承ParentClass,则a、b均可见,d不可见,由于子类与ParentClass不在同一包中,故c(default类型)不可见。 public class ChildClassTwo extends ParentClass{ public static void main(String args[]) { ChildClassTwo obj = new ChildClassTwo(); System.out.println(obj.a); System.out.println(obj.b); // System.out.println(obj.c); // c不可见 // System.out.println(obj.d); // d不可见 } }  4.对于TestTwo来说,ParentClass类、a均可见,b、c、d不可见。由于TestTwo与ParentClass不在同一个包中,故只有public修饰的成分可见。 public class TestTwo { public static void main(String args[]) { ParentClass obj = new ParentClass(); System.out.println(obj.a); // System.out.println(obj.b); // b 不可见 // System.out.println(obj.c); // c 不可见 // System.out.println(obj.d); // d 不可见 } }   •另外值得注意的是继承父类的子类与其他类之间的可见性,取决于其他类与父类之间的可见性。 对于TestOne来说,ChildClassOne中a,b,c都可见,d不可见,这是由于TestOne与ParentClass在同一个包中。 而对于TestThree来说,ChildClassOne中只有a可见,这是由于TestThree与ParentClass在不同的包中。 需要注意: 虽然a、b对ChildClassTwo可见,TestTwo与ChildClassTwo在同一包中, 但对于TestTwo来说,ChildClassTwo中只有a可见,这是由于TestTwo与ParentClass在不同的包中,只有public修饰的可见。 * * * * * * * * * */