程序地带

2021-01-15


1.封装


Java中的封装是指一个类把自己内部的实现细节进行隐藏,只暴露对外的接口(setter和getter方法)。封装又分为属性的封装和方法的封装。把属性定义为私有的,它们通过setter和getter方法来对属性的值进行设定和获取。下面我举一个简单的封装例子


public class Person { private int id; private String name; private Person person;


public int getId() {
return id;
}
public String getName() {
return name;
}
public Person getPerson() {
return person;
}
public void setId(int id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
public void setPerson(Person person) {
this.person = person;
}

}


在Person类中,定义了三个成员变量,分别为id name person,它们的访问修饰都是private私有的,通过setter和getter方法对这些变量进行设值以及取值。那么这么做有什么好处呢?封装的意义就是增强类的信息隐藏与模块化,提高安全性。封装的主要作用也是对外部隐藏具体的实现细节,增加程序的安全性。


2.继承


Java中的继承是指在一个现有类(父类)的基础上在构建一个新类(子类),子类可以拥有父类的成员变量以及成员方法(但是不一定能访问或调用,例如父类中private私有的成员变量以及方法不能访问和调用)。继承的作用就是能提高代码的复用性。子类拥有父类中的一切(拥有不一定能使用),它可以访问和使用父类中的非私有成员变量,以及重写父类中的非私有成员方法。


父类:


package cn.csu.ksh;


public class Person { private int a=1;//父类私有成员变量 private int id; private String name; private int age; public int getId() { return id; } public void setId(int id) { this.id = id; } 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; } @Override public String toString() { return “Person [id=” + id + “, name=” + name + “, age=” + age + “]”; }


public void say() {
System.out.println("person say..");
}
public void run() {
System.out.println("person run....");
}
//父类的私有方法
private void show() {
System.out.println("person show...");
}

}


子类:


package cn.csu.ksh;


public class Student extends Person {


@Override
public void say() {
super.say();
}
@Override
public void run() {
super.run();
}
public static void main(String[] args) {
Student stu = new Student();
//stu.a=1;//子类对象对父类的私有成员变量使用报错!
//stu.show();//子类对象调用父类的私有方法,同样报错!
stu.say();
stu.run();
}

}


继承的好处是实现代码的复用以及扩展,子类通过对父类代码的复用,可以不用再定义父类中已经定义的成员变量,方法上直接对父类的方法进行重写实现了扩展。


3.多态


多态就是指多种状态,就是说当一个操作在不同的对象时,会产生不同的结果。


在Java中,实现多态的方式有两种,一种是编译时的多态,另外一种是运行时多态,编译时的多态是通过方法的重载实现的,而运行时多态是通过方法的重写实现的。


方法的重载是指在同一个类中,有多个方法名相同的方法,但是这些方法有着不同的参数列表,在编译期我们就可以确定到底调用哪个方法。


方法的重写,子类重写父类中的方法(包括接口的实现),父类的引用不仅可以指向父类的对象,而且还可以指向子类的对象。当父类的引用指向子类的引用时,只有在运行时才能确定调用哪个方法。


其实在运行时的多态的实现,需要满足三个条件:1.继承(包括接口的实现)2.方法的重写 3.父类的引用指向子类对象


并且,我们说的多态都是类中方法的多态,属性是没有多态性的。方法的重载我这里就不举例说明了,我说一下运行时的多态。


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_54633867/article/details/112689107

随机推荐

maven 管理本地jar包

maven管理本地jar包命令参数解释安装指定文件到本地仓库命令:mvninstall:install-file-Dmaven.repo.local仓库位置-DgroupId=-...

A_xiaopihai 阅读(584)

PTA 列出连通集 思路分析及代码解析(邻接表)

PTA列出连通集(通过邻接表存储图)思路分析及代码解析v1.0一、前导0.写在前面1.需要掌握的知识2.题目信息二、解题思路分析1.题意理解2.思路分析三、具体实现1.弯路...

thexiaosi 阅读(761)

python linux 调试_Python 调试方法

Python是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。1、printprint('here')#可以发现某段逻辑是否执行#打印出变量的内容最简单print()只是...

weixin_39621185 阅读(415)

nginx_ssl模块

sslSSL:安全套接字层,由Netscape公司于1994年创建,它旨在通过Web创建安全的Internet通信。它是一种标准协议,用于加密浏览器和服务器之间的通信。它允...

咋滴都行 阅读(107)

python linux 调试_Linux下Python基础调试

当手边没有IDE,面对着Python调试犯愁时,你就可以参考下本文;(pdb命令调试)参考:http://docs.python.org/library/pd...

weixin_39564605 阅读(984)

Springboot集成druid

Springboot集成druidserver:port:9008spring:application:name:tensquare_userdatasource:#类型type:com.alibab...

爱喵才撸猫 阅读(700)