java封装继承方法重载重写

封装

将属性私有化 通过公有化方法来访问属性。
约定:提供两个公有方法,一个是得到属性值,另一个是设置属性值
得到属性值的方法约定 方法名称为 public 返回的数据类型 get加属性名(){ return this.属性 }
设置属性值的方法约定 方法名称为 public void set加属性名(数据类型 设置的值){ this.属性=设置的值; }

在其他方法中要获得和更改属性值只能使用公有的方法。


public: Java语言中访问限制最宽的修饰符,一般称之为“公共的”。被其修饰的类、属性以及方法不
     仅可以跨类访问,而且允许跨包(package)访问。
private: Java语言中对访问权限限制的最窄的修饰符,一般称之为“私有的”。被其修饰的类、属性以
     及方法只能被该类的对象访问,其子类不能访问,更不能允许跨包访问。
protect: 介于public 和 private 之间的一种访问修饰符,一般称之为“保护形”。被其修饰的类、
     属性以及方法只能被类本身的方法及子类访问,即使子类在不同的包中也可以访问。
default(friendly):即不加任何访问修饰符,通常称为“默认访问模式“。该模式下,只允许在同一个包中进行访
     问。
 
类的只有两种public,default(不同包不可以访问
public--都可访问(公有)   
private--类内可访问(私有)
protected--包内和子类可访问(保护)
不写(default)--包内可访问 (默认)

public>protected>default>private
Java 方法默认访问级别 : 包访问
Java 类默认访问级别 : 包访问
 
对于一个Class的成员变量或成员函数,如果不用public, protected, private中的任何一个修饰,那么该成员获得“默认访问控制”级别,即package access (包访问)。
属于package access的成员可以被同一个包中的其他类访问,但不能被其他包的类访问。
包访问的控制力弱于private,但强于protected。因为一方面,只要是子类,不管子类与父类是否位于同一个包中,那么子类都可以访问父 类中的protected方法。但是一旦位于原类的包外,不管是否是其子类,都无法访问其属于package access级别的成员。而另一方面,一个类可以访问同一个包中另一个类的package access成员,同时也能访问其protected成员。
(注:package是Java中的关键字,虽然包访问也是一种访问控制级别,但关键字”package”只能用来表示类属于哪个包,而不能像”private”,”public”那样放到成员变量或函数前面,作为访问控制修饰符。)
访问级别保护的强度:public<protected<默认<private





构造方法

系统会自动生成一个无参构造方法。
但是当我们声明了一个有参构造方法后,系统将不再生成无参构造方法,如果还是需要 需要自己声明。


方法重载

可以定义同名的方法,但是传入的参数不同,调用的时候会依据传递的参数 来选择使用哪个方法。

在类中发现方法不能满足我们的需求 但是我们又想给它调用的时候能够实现多种数据类型传入的调用
在类当中写多个相同功能 但是传入的参数的个数和类型 都不同 这种行为就叫做方法的重载。


继承

只能单继承可以多派生
当父类与子类的属性或方法重名时,子类会优先调用自己的属性或方法。
子类继承父类 用super表示调用父类里的属性或方法,和this类似。
当父类的方法不能满足子类的要求时,子类可以重写父类的方法以满足需求,父类的方法将被覆盖掉。

子类调用父类的构造方法 只能写在构造方法体的第一行 super();
即使用了super java中规定 每次new时只调用一次构造方法



对于子类来说 构造方法不能被继承
在实例化对象的时候会从顶端(Object)的父类开始依次调用构造方法
对于java来说 所有类都继承于Object类 Object是所有类的超类



final用于修饰类表示这个类无法被继承。



abstract 抽象的关键字 抽象类不能实例化
被abstract修饰的方法被称为抽象方法,他不能有方法体。即没有{}


抽象方法被继承时必须重写override(被实现);
只要有一个抽象方法那么这个类必须为抽象类。

@override 是注解 可以帮你检查是否实现了所有的抽象方法。 实现不一定要有代码,只要存在{}就是实现了。
注意:抽象类继承抽象类 同时也继承了抽象方法 可以在这里实现也可以不实现,让继承我的子类来实现。


子类重写父类的方法或属性 不能给比父类更严格的权限。


重载的方法 名称相同 类型可以不同,但是传入的参数必须不同类型或不同数目.
子类重写父类的方法 名称 类型 与传入的参数都必须相同。只能在方法体内有变化。
修饰关键词只能更宽松 不能更严格


重写基类:
Object 里的 toString 方法。
可以写
public String toString(){ return “你想要调用这个类的对象时 返回的字符串”;}
例如:

Student类

package Demo;

public class Student {

private String name;
public String toString(){
return "你好 我是Student类的对象!";
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
};
}
Test类

package Demo;

public class Test {
public static void main(String[] args) {
Student student = new Student();
System.out.println(student); //不重写toString 出来的是 Demo.Student@15db9742
}
}

最后输出的是 你好 我是Student类的对象
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值