面向对象02

来源:互联网 发布:生产数据分析报告 编辑:程序博客网 时间:2024/05/22 22:35

封装

  • 定义:指在定义一个类时,将类中的属性私有化,私有属性只能在本类中访问。为了使外界可以访问这些私有属性,需要使用一些public修饰的共有方法,获取私有化属性可以使用get()、set()方法

    public class Student {    private String name;    private int age;    public  String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }    public void show(){        System.out.println("我叫"+name+",我今年"+age);    }}    public class TestStudent {    public static void main(String[] args) {    Student student = new Student();    student.setName("李四");    student.setAge(20);    student.show();    }}
    • 运行结果为:
  • 方法的封装

    • 需不需要参数
    • 需不需要返回值类型

      public class Max {    public static void main(String[] args) {        int a=10;        int b=20;        int max = max(a,b);        System.out.println("最大值:"+max);    }    /***     * 在封装方法时:     * 1.需不需要参数     需要两个参数     * 2.需不需要返回值    需要返回max     * @param a     * @param b     * @return  max     */    private static int max(int a, int b) {        int max=a;        if(max<b){            max=b;        }        return max;    }}   
    • 运行结果

继承

  • 关键字(extends)
  • java只支持单继承,不支持多继承

    class A {}class B{}//java不支持多继承class C extends B,A{}//A是继承体系中最基础的功能class A {}class B extends A{}class C extends B{}
  • java不支持多继承的原因 :如果两个父类的有同样的方法,子类继承父类之后,在调用父类的方法时,分不清是调用的哪个父类的方法
  • 继承是指 : 子类获取父类的属性和方法,子类还有自己的特殊方法
  • 子类不可以直接访问父类的私有内容,但是继承继承了父类的私有内容
    public class Person {
    public String name;
    public int age;

    public void show(){    System.out.println("我叫"+name+",我今年"+age);}}public class Student extends Person{    public static void main(String[] args) {        Person person = new Person();        person.name="李四";        person.age=20;        person.show();    }}
    • 运行结果

多态

  • 多态满足的条件 : 继承 、 重写方法、 父类的引用指向子类的对象

    • Animal类

      public interface Animal {void call();}       
    • Dog类

      public class Dog implements Animal {@Overridepublic void call() {    System.out.println("汪汪----");}}
    • Cat类

      public class Cat implements Animal {@Overridepublic void call() {    System.out.println("喵喵----");}

      }

    • 测试类

      public class Test {public static void main(String[] args) {    Animal animal1=new Dog();    animal1.call();    Animal animal2 =new Cat();    animal2.call();}}
    • 运行结果

重载

  • 重载 : 方法名相同,参数列表(参数类型和参数个数)不同

    public class Test {public static void main(String[] args) {    int max1 = max(10, 20);    System.out.println("最大值为:" + max1);    float max2 = max(5.0f, 1.0f);    System.out.println("最大值为:" + max2);}public static int max(int a, int b) {    int max = a;    return b > max ? b : a;}// 方法名相同,参数列表不同public static float max(float a, float b) {    float max = a;    if (max < b) {        max = b;    }    return max;}

    }

重写

  • 重写 : 方法名相同,返回值类型相同,参数列表(参数类型和参数个数)相同

    • Person类
    • public class Person {public String name;public void show() {    System.out.println("我是" + name);}}
    • Student类

      public class Student extends Person {
      private String hobby;

      public  String getHobby() {    return hobby;}public void setHobby(String hobby) {    this.hobby = hobby;}@Overridepublic void show() {    // TODO Auto-generated method stub    super.show();    System.out.println("我的爱好是:" + hobby);}

      }

    • 测试类

      public class Test {    public static void main(String[] args) {        Student student = new Student();        student.name="王五";        student.setHobby("唱歌");        student.show();    }}
    • 运行结果
原创粉丝点击