Java中的面向对象编程的简单总结

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

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

核心:继承、多态、封装

对象之间的关系

1.继承

1.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("大骨头");
    }

}

 

 方法的返回值举例:

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;//返回一个子类的实例
    }
}

 (2)动态绑定

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

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

 

(3)方法重写

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

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

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

2.向下转型

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

抽象类

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

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

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

接口

接口比抽象类更抽象

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

抽象类和接口的区别 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值