• Java面向对象


    目录

    什么是面向对象

    方法的定义

    类和对象的创建

    封装

    继承

    多态

    Static

    四大修饰符

    抽象类

    接口


    什么是面向对象

    方法的定义

    类和对象的创建

    封装

    1. public class Student {
    2. //属性
    3. //私有属性
    4. private String name;
    5. private int id;
    6. private int age;
    7. //使用get/set方法可以对属性设置值
    8. public String getName(){
    9. return this.name;
    10. }
    11. public void setName(String name){
    12. this.name = name;
    13. }
    14. public int getId() {
    15. return id;
    16. }
    17. public void setId(int id) {
    18. this.id = id;
    19. }
    20. public int getAge() {
    21. return age;
    22. }
    23. //可以安全规避
    24. public void setAge(int age) {
    25. if (age>150||age<0){
    26. System.out.println("错误");
    27. }else{
    28. this.age = age;
    29. }
    30. }
    31. }

    好处

    1、隐藏代码细节,提高安全性,保护数据

    2、统一接口规范,可维护性高

    3、可以进行安全规避

    继承

    方法重写 :

    1. //A是子类,B是父类
    2. A a = new A();//重写前,A的方法
    3. a.test();
    4. B b = new A();//重写前,B的方法,重写后A的方法
    5. b.test();

    继承语法:

    1. public class Student extends Person{
    2. //私有的无法被继承
    3. }
    1. 1super调用父类的构造方法,必须在构造方法的第一个
    2. 2super必须只能出现在子类的方法或者构造方法中
    3. 3superthis不能同时调用构造方法
    4. Vs this
    5. 代表的对象不同:
    6. this:本身调用者这个对象
    7. super:父类对象
    8. 前提:
    9. this:没继承也可以使用
    10. super:只能在继承条件下才可以使用
    11. 构造方法:
    12. this();本类的构造
    13. super();父类的构造
    14. 若是父类定义了有参构造器,并且无参构造器没有显式定义,则无法调用父类的无参构造器
    15. 只能调用父类的有参,也无法定义子类的无参,所以定义有参构造器之后要把无参写上,
    16. */

    多态

    多态的概念:通俗来说,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态。

    1. package demo02;
    2. import demo02.A;
    3. public class Application {
    4. public static void main(String[] args) {
    5. //一个对象的实际类型是确定的
    6. new Student();
    7. new Person();
    8. //可以指向的引用类型就不确定了:父类的引用指向子类
    9. Student s1 = new Student();
    10. //父类型,可以指向子类,但是不能调用子类独有的方法
    11. Person s2 = new Student();
    12. Object s3 = new Student();
    13. //对象能执行哪些方法,主要看对象左边的类型,和右边关系不大
    14. ((Student)s2).eat();
    15. s1.eat();
    16. }
    17. }

    注意事项:
    1、多态是方法的多态,属性没有多态 
    2、有父子类关系的才可以进行转换
    3、多态存在的条件,有继承关系,方法进行重写 Father F1=new Person(),父类的引用指向子类的对象,低--->高不需要强转,不过可能会遗失方法,高--->低要强转。
    static private final修饰的无法进行重写

    1. class Animal {
    2. public void move() {
    3. System.out.println("动物可以移动");
    4. }
    5. }
    6. class Dog extends Animal {
    7. @Override
    8. public void move() {
    9. System.out.println("狗可以跑和走");
    10. }
    11. public void bark() {
    12. System.out.println("狗可以吠叫");
    13. }
    14. }
    15. class TestDog {
    16. // 形参类型只写一种Animal即可,如果没有向上转型,要写Dog,Fish,Cat等多种形参,那就累死了。
    17. public static void doEat(Animal h) {
    18. h.move();
    19. }
    20. public static void main(String args[]) {
    21. Animal a = new Animal(); // Animal 对象
    22. // 下一行就是向上转型,需要Animal,给个Dog,也行吧,但是不能执行Dog类的特有方法了。
    23. Animal b = new Dog();
    24. // 下一行需要Dog,给它Animal,肯定不行,编译出错!
    25. // Dog d =new Animal();
    26. Dog c = new Dog();
    27. a.move();// 执行 Animal 类的方法
    28. b.move();//执行 Dog 类的方法
    29. // b.bark() 该方法使用失败
    30. c.bark();
    31. //下两行体现了向上转型的精髓,假如没有向上转型,面对不同的实参,形参要写很多种,那样该方法要写多少个呀!!!!
    32. doEat(new Dog()); //狗可以跑和走
    33. doEat(new Animal()); //动物可以移动
    34. }
    35. }

     

    Static

    四大修饰符

    抽象类

    接口

    这里可以实现多个接口,实现多继承,接口只有方法的定义

  • 相关阅读:
    app小程序开发的营销优势有什么?
    java毕业设计奢品网站系统源码+lw文档+mybatis+系统+mysql数据库+调试
    关于QUERY_ALL_PACKAGES权限导致Google下架apk
    AQS源码阅读与强软弱虚4种引用以及ThreadLocal原理与源码
    VMware搭载linux出现的bugs
    数组(1)
    SOFA Weekly | 开源人—于雨、本周 QA、本周 Contributor
    3428. 放苹果
    图解拓扑排序+代码实现
    color_detection(AI开发框架esp-who)
  • 原文地址:https://blog.csdn.net/weixin_47059164/article/details/134297759