一.什么是面向对象
面向对象编程的本质是:以类的方式组织代码,以对象的组织(封装)代码。
1.面向对象的三大特性:
封装
继承
多态
二.super和this
1.super关键字的用法有三种
1.在子类的成员方法中访问父类的成员变量.
2.在子类的成员方法中访问父类的成员方法.
3.在子类的构造方法中访问父类的构造方法.
2.
//this关键字用法有三种 //1.在本类的成员方法中,访问本类的成员变量. //2.在本类的成员方法中,访问本类的成员方法. //3.在本类的构造方法中,访问本类的另一个构造方法. //在第三种方法中要注意: //A.super和this两种构造调用,不能同时使用. //this(...)调用也必须是构造方法的第一个语句,唯一一个, int num = 10; public static void main(String[] args) { ThisDemo thisDemo = new ThisDemo(); thisDemo.showNum(); } public void showNum(){ int num = 20; System.out.println(num); //局部变量 System.out.println(this.num); //类中的成员变量 } public void methodA(){ } public void methodB(){ this.methodA(); //本类的成员方法调用本类的另一个成员方法 } public ThisDemo(){ this(12);//本类的无参构造方法 调用本类的有参构造方法 } public ThisDemo(int a){ }
三.构造方法(构造器)
1.构造方法
和类名相同 无返回值。
2.作用
new的本质实在调用构造方法。
初始化对象的值。
3.注意点
在定义有参构造后,无参构造必须显示定义
public class Person { //构造器有以下俩个特点: //1.必须和类的名字相同 //2. 必须没有返回类型,也不能写void //显示的定义构造器 String name; //构造器作用:实例化初始值 //使用new 关键字,本质上是在调用构造器 public Person(){ this.name="lc"; } //有参构造,一旦定义了有参构造,无参构造就必须显示定义 public Person(String name){ this.name=name; } }
四.封装
1.封装的步骤
使用privite修饰需要封装的成员变量。
提供一个公开的方法设置或访问私有的属性:通过setXX()和getXX()方法。
2.封装的意义与作用
提高程序的安全性,保护数据。
隐藏代码的实现细节。
统一用户的调用接口。
提高系统的可维护性。
便于调用者的使用,
public class Teacher { 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 class Teacher { 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; } }
五.super关键字
1.super的使用
访问父类中的属性。
调用父类中的方法。
调用父类中的构造器。
2.super注意点
super调用父类的构造方法,必须在构造方法中的第一个。
super必须只能出现在子类的方法或者构造方法中。
super和this不能同时调用构造方法。
3.VS this
代表的对象不同
this:本身调用者这个对象,
super:代表父类对象的应用,
前提
this:没有继承也可以使用。
super:只能在继承条件下使用。
构造方法
this():本类的构造。
super():父类的构造。
六.多态
即同一方法可以根据发送对象的不同而采用多种不同的行为方式
//父类的引用指向子类 Student s1 = new Student(); //父类型 可以指向子类 但是不能调用子类的独有方法 Person s2 = new Student(); Object s3 = new Student();
多态存在的条件:
有继承关系
子类重写父类的方法
父类引用指向子类的对象
多态的注意事项
多态是方法的多态,属性没有多态性
七.方法重载和方法重写
方法重载
方法名一样,但参数列表不同。
方法重写
只存在于有继承关系的类里 子类来重写父类的方法。
静态方法不能被重写
1. 父类的静态方法不能被子类重写为非静态方法 //编译出错 2. 父类的非静态方法不能被子类重写为静态方法;//编译出错 私有方法不能被子类重写,重写的语法 1. 方法名必须相同 2. 参数列表必须相同 3. 访问控制修饰符可以被扩大,但是不能被缩小: public protected default private 4. 抛出异常类型的范围可以被缩小,但是不能被扩大ClassNotFoundException ---> Exception 5. 返回类型可以相同,也可以不同,如果不同的话,子类重写后的方法返回类型必须是父类方法返回类型的子类型 例如:父类方法的返回类型是Person,子类重写后的返回类可以是Person也可以是Person的子类型
八.抽象abstract
1.语法
public abstract class Action{ public abstract void doSomething(); } public void doSomething(){...}
2.抽象类和抽象方法的关系
抽象类中可以没有抽象方法,但是有抽象方法的类一定要声明为抽象类。
标签:java,name,构造方法,子类,面向对象,父类,方法,public From: https://www.cnblogs.com/1997Li/p/17930901.html