面向对象编程:以要解决的问题中所涉及的的对象为主体

面向过程编程:以具体的解题过程为研究主体

核心:继承、多态、封装

对象之间的关系

1.继承

1.Java中的继承是单向继承,这样的设置是为了避免多态继承的缺点。

关于java面向对象的心得体会_子类

单向继承:一个子类只能继承自一个父类

多向继承:一个子类可以继承自多个父类

2.访问权限

 

    同一类中

同一个包

不同包的子类

不同包的非子类

private

        √

 

 

 

默认

        √

      √

 

 

protected

        √

      √

          √

 

public

        √

      √

          √

   √

子类继承父类的成员变量时,基本上都可以继承,但是private成员变量不可以直接访问

子类继承父类的方法时,不能继承构造方法,但是可以调用(用super调用),private方法也不可以直接访问。

3.final关键字

   final修饰变量和成员变量,表示不能被修改(常量)

   final修饰类,表示该类不能被继承

2.包含

       当对象a是对象A的属性时,则成对象A包含对象a。eg:a为显像管,A为电视机 。

       

3.关联


     当对象b的引用为对象A的属性时,称对象b和对象A相关联。


     


 

多态

1.向上转型

父类的引用所指向的是子类的实例。

(1)向上转型的三种形式:

  • 直接赋值
  • 方法传参
  • 方法的返回值                         

方法传参举例:

Dog类

class Dog extends Animal{
        public Dog(String name){
            super(name );
        }
        public void befriendly(){
            System.out.println(super.name + "对人很友好" + "o(* ̄▽ ̄*)ブ");
        }
    }
public class Test {
        public static void main(String[] args){
//            Cat cat =new Cat("小咪");
//            cat.climb();
            Animal dog = new Dog("二狗子");//Dog 类是 Animal类 的子类
            feed(dog);
    }
    public static void feed(Animal animal){
       animal.eat("大骨头");
    }

}

 

关于java面向对象的心得体会_关于java面向对象的心得体会_02

 方法的返回值举例:

Cat类

class Cat extends Animal{
        public  Cat (String name){
          super(name);
            System.out.println(name + " " + "is beautiful");
        }
          public void climb( ){
                System.out.println(super.name + "爬树很厉害" + "✪ ω ✪");
          }
    }
public class Test {
        public static void main(String[] args){

            Animal animal = findMyLittleHoney();//父类引用指向该函数

    }

    public static Animal findMyLittleHoney(){
            Cat cat = new Cat("Candy");
            return cat;//返回一个子类的实例
    }
}

关于java面向对象的心得体会_父类_03

 (2)动态绑定

          如果子类和父类中有一样的同名方法,当两个不同的父类引用分别指向父类和子类的实例时,指向父类实例的调用的是父类中的同名方法,指向子类实例的调用子类的同名方法。

动态:发生在运行过程中。

 

(3)方法重写

      子类中的方法和父类的方法名、参数列表完全一样的方法,称为方法重写。

      普通方法可以重写,static修饰的方法不可以重写。

      子类的方法访问权限不得低于父类的方法访问权限。

2.向下转型

子类的引用指向父类的实例

抽象类

抽象类一般格式:abstract class类名

抽象方法:abstract public修饰  不能是private型  抽象方法没有方法体,不用写花括弧,语句后面直接写分号。抽象方法不可以直接实例化,需要进行方法重写。

抽象类中可以有成员变量和普通方法,子类也可以调用

接口

接口比抽象类更抽象

接口中只能有抽象方法和静态常量(static final)

抽象类和接口的区别 

  • 两者内容有别。抽象类中有抽象方法、普通方法以及成员变量;接口中只能有抽象方法和静态常量(static final)
  • 一个子类只能继承一个抽象类,一个子类可以实现多个接口
  • 抽象类被继承的关键字是:extends;抽象类的关键字是:implements
  • 抽象类有各种权限,而接口是public
  • 一个抽象类可以实现若干个接口,但是接口不能继承抽象类,接口可以使用extends关键字继承多个父接口