韩顺平 java笔记 第9讲 第10讲 第11讲 第12讲 抽象 封装 继承 多态 方法重载 方法重写

Posted wangxiaoli

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了韩顺平 java笔记 第9讲 第10讲 第11讲 第12讲 抽象 封装 继承 多态 方法重载 方法重写相关的知识,希望对你有一定的参考价值。

java面向对象编程的四大特征

   抽象、封装、继承、多态

1.抽象:把一类事物的共同属性和行为提取出来,形成一个物理模拟,这种研究问题的方法。

2.封装:把抽象出来的数据和对数据的操作封装在一起,数据被保护在内部,程序的其他部分只有通过被授权的操作(成员方法)

   才能对数据进行操作。

 2.1     public class Demo{

      public static void main(String[] args){

      Clerk clerk1 = new Clerk("小花",24,4567.6f);

      System.out.println("名字是",+ clerk1.name + "薪水" + clerk1.getSal());

    }

   }

   class Clerk {

    public String name;

    private int age;

       private float salary;

    public Clerk(String name,int age,float sal){

      this.name = name;

      this.age = age;

      this.salary = sal;

    }

      public float getSal(){

      return this.salary;

    }

   }

  2.2 访问修饰符

  访问级别  访问控制修饰符  同类  同包  子类  不同包

    1    public            Y        Y       Y        Y

              2              protect           Y        Y       Y       N  

    3   没有修饰符       Y   Y       N       N 

    4              private           Y   N  N  N

3.继承

  在父类中定义这些相同的属性和方法,所有的子类不需要重新定义这些属性和方法,之需要extends语句声明继承父类

*****子类最多只能继承一个父类(指直接继承)

  java所有类都是Obiect类的子类

  package com.abc;

  public class Demo117{

    public static void main(String[] args){

      Pupil p1 = new Pupil();

      p1.printName();

    }

  }

  class Stu{

    protected int age;

    public String name;

    public float fee;

    private String job;//私有不被继承,不希望继承某个属性和方法 就声明为private

    public void printName(){

      System.out.println("名字" + this.name);

    }

  }

  class Pupil extends Stu{

    public void pay(float fee){

      this.fee=fee;

    }

  }

  class Pre extends Pupil{

    public void pay(float fee){

      this.fee=fee*1.5f;

    }

  }

4.多态

  4.1方法重载

    (1)方法名相同

    (2)方法的参数类型、个数、顺序、至少有一项不同。

    (3)方法的返回类型可以不同

    (4)方法的修饰符可以不同

  4.2方法重写

    (1)子类的方法的返回类型、参数、方法名称要和父类的一样

    (2)子类方法不能缩小父类方法的访问权限

  public class Demo{

    public static void main(String[] args){

      Cat cat1 = new Cat();

      cat1.cry();

      Dog dog1 = new Dog();

      dog1.cry();

    }

  } 

  class Animal{

    int age;

    String name;

    public void cry(){

      System.out.println("我是动物,不知道叫");

    }

  }

  class Cat extends Animal{

    public void cry(){

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

    }

  }

     class Dog extends Animal{

    public void cry(){

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

    }

  }

******super.xxx;调用父类XXX的变量或方法引用。

******super.xxx();直接访问调用父类的方法。

******super();调用父类初始化方法public xxx()方法。

    4.3 多态

  public class Demo123{

    public static void main(String[] args){

      Animal an = new Cat();

      an.cry();

      an = new Dog();

      an.cry(); 

      Master master = new Master();

      master.feed(new Dog(),new Bone());

      master.feed(new Cat(),new Fish());

    }

  }

  class Master{

    public void feed (Animal an,Food f);

    an.eat();

    f.showName();

  }

  class Animal (){

    public void eat(){

    }

  }

  class Dog extends Animal (){

    public void eat(){

    }

  }

  class Cat Extends Animal (){

    public void eat(){

    }

  }

  class Food{

    public void show Name(){

    }

  }

  class Fish extends Food{

    public void show Name(){

    }

  }

   class  Bone extends Food{

    public void show Name(){

    }

  }

 

 

 

以上是关于韩顺平 java笔记 第9讲 第10讲 第11讲 第12讲 抽象 封装 继承 多态 方法重载 方法重写的主要内容,如果未能解决你的问题,请参考以下文章

韩顺平 java笔记 第43-46讲 io编程

韩顺平 java笔记 第20讲 二进制 位运算 移位运算

韩顺平 servlet 笔记 第5讲

韩顺平 servlet 笔记 第4讲

韩顺平循序渐进学java 第04讲 流程控制

韩顺平循序渐进学java 第03讲 运算符