java学习笔记--面向对象

来源:互联网 发布:键盘 编程 编辑:程序博客网 时间:2024/05/20 20:47

类是用于描述同一类型的对象的一个抽象的概念,类中定义了这一类对象所应具有的静态和动态属性

对象可以看成该类的一个具体实例


继承关系:xx是一种xx


成员变量未赋值默认初始化,一般是false,0,null;局部变量不会默认初始化


对象是new出来的,分配在动态内存里,堆;类的每个成员变量在不同的对象中都有不同的值(除了静态变量),方法只有一份,只有调用时占用内存


构造函数是定义在java类中的一个用来初始化对象的函数,构造方法与类同名且没有返回值

public class Person{

int i;

int j;

Person(int _id,int_age){

i=_id;

j=_age;

}

}


重载是指一个类中可以有多个名字相同,但参数不同的方法;构造方法也可以重载


this可以看做一个变量,他的值是当前对象的引用


static关键字,声明的变量为类的全局变量,在第一次使用时被初始化,对于该类的所有对象来说,static成员变量只有一份

静态方法不可以引用非静态成员

可以通过对象引用或类名访问静态成员


package命名:公司名字倒过来


java.lang不需要引用


打jar包:jar -cvf xx.jar *.*


重写:

子类可以对继承基类的方法进行重写

重写方法必须和被重写方法具有相同的名称、参数和返回类型

重写方法不能使用比被重写方法更为严格的访问权限


继承中的构造方法

子类的构造过程必须调用父类的构造方法

子类可以在自己的构造方法中使用super(argument_list)方法调用父类方法

使用this(argument_list)调用本类的其他构造方法

super必须写在构造方法第一行

子类如果没有显性的调用构造方法,默认调用无参构造方法


Object类

没有extends的类默认继承Object


equals:默认实现相当于a==b,需要重写

public boolean equals(Object obj){

if(obj==null)return false;

else {

if(obj instanceof Cat){

Cat c =(Cat)obj;

if(c.color==this.color && c.weight==this.color){

return true;

}

}

}

return false;

}


对象转型

一个基类引用可以“指向“”子类对象 Father f=new Sun()

一个基类引用不可以访问子类新增加的对象

可以使用instanceof来判断该引用类型变量所“指向”的对象是否属于该类或者该类的子类

子类的对象可以当做基类的对象来使用称作向上转型,反正称为向下转型


动态绑定是指在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法

多态存在有3个条件:

1.要有继承

2.要有重写

3.父类引用指向子类对象

new的是哪个子类对象,调用的就是那个子类的方法

class Animal{

private String name;

Animal(String name){

this.name=name;

}

public void  enjoy(){

System.out.println("叫声");

}

}

class Dog extends Animal{

private String dogColor;

Dog(String n,String c){

Super(n);

dogColor=c;

}

public void enjoy(){

System.out.println("狗叫声");

}

}

class Cat extends Animal{

private String catColor;

Cat(String n,Stringc){

Super(n);

catColor=c;

}

public void enjoy(){

System.out.println("猫叫声");

}

}

class Lady{

private String name;

private Animal pet;

Lady(String name,Animal pet){

this.name=name;

this.pet=pet;

}

public void myPetEnjoy(){

pet.enjoy();

}

}


public class Test{

public static void main (String args[]){

Cat c = new Cat("catname","blue");

Dog d = new Dog("dogname","black");

Lady l1 =new Lady("l1",c);

Lady l2 = new Lady("l2",d);

l1.myPetEnjoy();

l2.myPetEnjoy();

}

}

抽象类

abstract关键字修饰类或者方法

含有抽象方法的类必须被申明为抽象类,抽象类必须被继承,抽象方法必须被重写

抽象类不能被实例化

抽象方法只需申明,不需实现


final

final的变量的值不能被改变

final的方法不能被重写

final的类不能被继承


接口

接口是抽象方法和常量值的定义的集合

接口是特殊的抽象类,只有常量和方法的定义,而没有变量和方法的实现

接口可以多重实现

接口中声明的属性是pubilc static final,也只能是

接口中声明的方法只能是public

接口可以继承