java se 5_JavaSE(5)(三大特性)

面向对象三大主线

类及类的成员

三大特性

其他关键字

二、面向对象三大特性

封装

原因

使用者对类内部定义的属性(对象的成员变量)的直接操作会导致数据的错误、混乱或安全性问题。所以要将属性保护起来,防止乱用。保护的方式:信息隐藏

方式

Java中通过将数据声明为私有的(private),再提供公共的(public)方法:getXxx()和setXxx()实现对该属性的操作,以实现下述目的:

隐藏一个类中不需要对外提供的实现细节;

使用者只能通过事先定制好的方法来访问数据,可以方便地加入控制逻辑,限制对属性的不合理操作;

便于修改,增强代码的可维护性;

权限修饰符

修饰符

内部类

同一个包

子类

任何地方

private

Yes

default

Yes

Yes

protected

Yes

Yes

Yes

public

Yes

Yes

Yes

Yes

get set 方法

Java中通过将数据声明为私有的(private),再提供公共的(public)方法:getXxx()和setXxx()实现对该属性的操作,以实现下述目的:

隐藏一个类中不需要对外提供的实现细节

使用者只能通过事先定制好的方法来访问数据,可以方便地加入控制逻辑,限制对属性的不合理操作;

便于修改,增强代码的可维护性;

class Person{

private int age;

private String name;

private String gender;

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getGender() {

return gender;

}

public void setGender(String gender) {

this.gender = gender;

}

}

代码如上

继承

格式

class SubClass extends SuperClass{

}

Java只支持单继承,不可以多继承,可以多层继承(直接父类,间接父类)

方法重写 override

格式:

权限修饰符 返回值类型 方法名(形参列表) throws 异常类型{

​方法体

}

使用规则和注意事项:

重写方法不能使用比被重写方法更严格的访问权限

重写和被重写的方法须同时为static的,或同时为非static的

子类方法抛出的异常不能大于父类被重写方法的异常

Object是所有类的祖宗

class SuperClass{

public String say(){

return "Father";

}

}

class SubClass extends SuperClass{

public String say(){

return "Son";

}

}

优点

减少了代码的冗余,提高了代码的复用性

便于功能的扩展

为多态提供了前提

具体体现

单例模式

饿汉式1

私有化类的构造器

在类的内部创建当前类的一个对象,声明为静态,私有

创建公共的静态方法,返回创建的对象

class SingleTon{

private SingleTon(){

}

private static SingleTon singleTon;

public static SingleTon getSingleTon(){

return new SingleTon();

}

public String say(){

return "SingleTon!";

}

}

public class SingleTonTest {

public static void main(String[] args) {

SingleTon singleTon = SingleTon.getSingleTon();

System.out.println(singleTon.say());

}

}

饿汉式2

私有化类的构造器

在类的内部声明一个该类的引用,声明为静态,私有的并且赋值为null

通过静态代码块创建一个该类的引用,并赋值给2声明的引用

创建公共的静态方法,返回创建的对象

class SingleTon{

private static SingleTon singleTon = null;

static {

singleTon = new SingleTon();

}

private SingleTon(){

}

public static SingleTon getSingleTon(){

return singleTon;

}

public String say(){

return "SingleTon!";

}

}

public class SingleTonTest {

public static void main(String[] args) {

SingleTon singleTon = SingleTon.getSingleTon();

System.out.println(singleTon.say());

}

}

懒汉式

私有化类的构造器

在类的内部声明一个该类的引用,并声明为静态,私有的并赋值为null,

创建公共的静态方法,在方法体重判断该2中声明的引用是否为null,如果是null则创建类的对象并赋值,返回创建的对象

class SingleTon{

private SingleTon(){

}

private static SingleTon singleTon = null;

public static SingleTon getSingleTon(){

if (singleTon == null) {

singleTon = new SingleTon();

return singleTon;

} else {

return singleTon;

}

}

public String say(){

return "SingleTon!";

}

}

public class SingleTonTest {

public static void main(String[] args) {

SingleTon singleTon = SingleTon.getSingleTon();

System.out.println(singleTon.say());

}

}

枚举类

必须在枚举类的第一行声明枚举类对象

l枚举类和普通类的区别:

使用 enum 定义的枚举类默认继承了 java.lang.Enum 类

枚举类的构造器只能使用 private 访问控制符

枚举类的所有实例必须在枚举类中显式列出(, 分隔 ; 结尾). 列出的实例系统会自动添加 public static final 修饰

枚举类对象可以有属性

若枚举类显式的定义了带参数的构造器, 则在列出枚举值时也必须对应的传入参数

//代码稍后写

多态

定义

多态性,是面向对象中最重要的概念,在java中有两种体现:

1.对象的多态性

2.引用变量的多态性

Java引用变量有两个类型:编译时类型和运行时类型。编译时类型由声明该变量时使用的类型决定,运行时类型由实际赋给该变量的对象决定。

若编译时类型和运行时类型不一致,就出现多态(Polymorphism)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值