ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

面向对象

2022-08-04 17:31:55  阅读:163  来源: 互联网

标签:name 子类 age 面向对象 父类 方法 public


面向对象

什么是面向对象

  • 面向对象编程(Object-Oriented Programming,OOP)

  • 面向对象编程的本质就是:以类的方式组织代码,以对象的形式组织封装数据。

  • 三大特性:

    • 封装

    • 继承

    • 多态

构造器

  1. 和类名相同

  2. 没有返回值

作用:

  • new 本质在调用构造器

  • 初始化对象的值

注意:

  • 定义的有参构造之后,如果要使用无参构造,显示的定义一个无参构造

  • Alt+Insert

  • this.类定义的值的名 = 参数传进来的值

public class Person(){
   //显示定义构造器
   String name;
   int age;
}
//无参构造
public Person(){
   
}
//有参构造
public Person(String name,int age){
   this.name = name;
   this.age = age;
}
==============================================
//执行
   public class Application(){
       public static void main(String[] args){
           //new实例化一个对象
           Person person = new Person();
//或者Person person = new Person(name:。。。);
           System.out.print(person.name);
      }
  }

封装

  private String name;
   private int age;

   public String getName(){
       return this.name;
  }
   public void setName(String name){
       this.name = name;
  }
   public int getAge(){
       return this.age;
  }
   public void setAge(int age){
       if (age > 120 ||age < 0){
           this.age = 3;
      }else{
           this.age = age;
      }
  }

继承

  • Object类

  • super

    • 调用父类的构造方法,必须在构造方法的第一个

    • 必须只能出现在子类的方法或者构造方法中

    • super 和 this 不能同时调用构造方法

    VS this

    代表的对象不同:

    this:本身调用者这个对象

    super:代表父类对象的应用

    前提:

    this:没有继承也可以使用

    super:只能在继承的条件下才能使用

    构造方法的区别

    this();本类的构造

    super(): 父类的构造

  • 方法重写

  • 需要有继承关系,子类重写父类的方法

  • 参数列表必须相同

  • 非静态才能重写,只能是public

  • (public>protected>default>private)修饰符只能扩大,不能减小

  • 抛出异常,能缩小不能扩大

    • 静态的方法和非静态的方法区别很大(static与非静态)

静态:

非静态:

image-20220804141749208

为什么需要重写?

  1. 父类的功能,子类不一定需要或者不一定满足。

多态(方法的多态)

同一方法可以根据发送对象的不同而采取多种不同的行为方式

  • 一个对象的实际类型是确定的,可以指向的的引用类型就不确定:父类的引用指向子类

  • 没重写(@override)之前,Student类 能调用的方法都是自己的或者继承父类的。重写父类的方法后,调用子类的方法。(Student s1 = new Student())

  • 父类方法可以指向子类,但是不能调用子类独有的方法。 Person s2 = new Student()、

  • 对象执行哪些方法主要看对象左边的类型。

    多态存在的条件

    • 有继承关系

    • 子类重写父类方法

    • 父类引用指向子类的对象

static关键字

代码块:

image-20220804171123226

image-20220804171138167

静态导入包

image-20220804160718042

抽象类(类是单继承,接口是、可以多继承)

  1. abstract,抽象方法,只有方法名字,没有方法的实现。

  2. 抽象类的所有方法,继承了他的子类,都必须实现他的方法,除非重写。

  3. 抽象类不能new,只能靠子类去实现

  4. 抽象类能写普通方法,抽象方法必须在抽象类中

思考:抽象类存在构造器吗?

抽象类一定有而且是必须有构造器,是供子类创建对象时,初始化父类成员使用的。 理解:子类的构造器中,有默认的super()需要访问父类构造器。)

存在的意义是什么?

为了被子类继承,抽象类体现的是模板思想。 理解:抽象类中已经实现的是模板中确定的成员,抽象类不确定如何实现的定义成抽象方法,交给具体的子类去实现。)

接口(本质是契约)

作用:

  1. 约束。对类进行约束,强制不同的类具有相同的行为。

  2. 类可以实现接口 通过implements 接口。实现接口的类,就需要重写接口中的方法。

  3. 定义一些方法,让不同的类通过接口去引用,从而达到让不同的类都能运用那些方法。

  4. 接口中所有定义的方法其实都是抽象的 public static

  5. 所有常量都是 public static final

  6. 接口不能被实例化,接口中没有构造方法

  7. implements 可以实现多个接口image-20220804170253482

内部类

1.一个Java类中可以有多个class类,但是只能有一个public class

标签:name,子类,age,面向对象,父类,方法,public
来源: https://www.cnblogs.com/wm21/p/16551349.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有