标签:system 想法 spring effect sim 如何 继承 输入 数据隐藏
java语言的学习是一个体系,所以如果想要对java的编程有一个很精通的一个掌握,它离不开很多基础的知识点,比如JVM的原理、java多线程并发编程、数据结构等等。所以我这里对我学习的java的课程进行定期的总结,来记录我学习java的一些想法和心得。也希望能通过我的这些分享,给需要的学习某方面知识的人一些帮助。
java语言最明显的几个特点就是:封装、继承和多态
,下面来具体聊一聊这三个特性。
封装,它是一中信息隐藏技术。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象
。在java中通过关键字private,protected和public实现封装。所以说,封装把对象的所有组成部分组合在一起,封装定义程序如何引用对象的数据,封装实际上使用方法将类的数据隐藏起来,控制用户对类的修改和访问数据的程度。 适当的封装可以让程式码更容易理解和维护,也加强了程式码的安全性。
继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。 新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类,就是说子类会继承父类的所有成员属性和方法。继承只能单一继承,一个类只能继承一个父类,而不能有多个继承类,多继承的方式只能通过接口来实现。
在我们日常编程中,合理的使用继承特性,能够消除代码的复制,从而达到简化代码以及程序逻辑的作用。
这里我们来说一下继承的特性。
package com.young.basic;
public class ExtendsDemo {
//main
public static void main(String aa[]) {
//new 一个对象B()
new B();
new C();
}
}
//建一个A类
class A {
//成员变量 其中num是实参
int num = 0;
private String name = "default name";
public A(){
System.out.println("父类无参数构造方法");
}
//成员方法,其中 i 是形参
public A(int i) {
//输入int型文件输出下面
System.out.println("aaaaaaaaaaaaaaaaaaa");
System.out.println("i= " + i);
//把输入的i赋值给成员变量num
num = i;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
//B继承A
class B extends A {
int num = 0;
//成员方法B.
public B() {
//继承类A的方法.因为B继承了A必然继承了A的特性.所以输入int值10令方法实现.
super(10);
System.out.println("bbbbbbbbbbbbbbbbbbbb");
//这里的num是类B的.
System.out.println("num= " + num);
//如果想显示类A的num则需要用下列的super.num.这里注意num在类A中需是成员变量才可以.
System.out.println("super.num= " + super.num);
//子类继承的私有name只能通过继承的公有方法来访问和修改;如果没有提供公共方法,则不能访问和修改
System.out.println("子类的name = " + this.getName());
}
@Override
public void setName(String name) {
super.setName(name);
System.out.println("这是子类B的重写的");
}
}
class C extends A{
public C(){
System.out.println("子类C无参数构造函数");
System.out.println("cccccccccccccccc");
}
}
运行结果:
aaaaaaaaaaaaaaaaaaa
i= 10
bbbbbbbbbbbbbbbbbbbb
num= 0
super.num= 10
子类的name = default name
父类无参数构造方法
子类C无参数构造函数
cccccccccccccccc
从上边例子中我们能看出,
在面向对象语言中,接口的多种不同的实现方式即为多态。那么在Java语言中,多态,意味着一个对象有着多重特征,可以在特定的情况下,表现不同的状态,从而对应着不同的属性和方法。多态的这种思想使Java语言更加的灵活,很多设计模式和spring框架中都使用到了多态技术。
具体的表现在这些方面:
----------------------2020年07月08日18:54:40 未完待续---------------------------------------------
我们还是通过一段代码来了解:
public class PolymorphismDemo {
public static void main(String[] args) {
IParent p1 = new Child_A();
IParent p2 = new Child_B();
doSimpleCall(p1);
doSimpleCall(p2);
Child_A child_a = new Child_A();
Child_B child_b = new Child_B();
//child_a 没有重写父类的eat方法,所以执行的是父类的eat方法
child_a.eat();
//child_b重写了父类的eat方法,所以执行自己的eat方法
child_b.eat();
//child_b对eat方法进行了重载,增加了一个输入参数
child_b.eat("popcorn");
}
//这里我们并不知道具体穿给我们的是哪个实现Parent的类
public static void doSimpleCall(IParent p){
p.simpleCall();
}
}
interface IParent//父类接口
{
public void simpleCall();
}
//父类
class Parent{
public void eat(){
System.out.println("parent is eating");
}
}
class Child_A extends Parent implements IParent
{
public void simpleCall()
{
System.out.println("I am Child_A");
//具体的实现细节;
}
}
class Child_B extends Parent implements IParent
{
public void simpleCall()
{
System.out.println("I am Child_B");
//具体的实现细节;
}
@Override
public void eat() {
System.out.println("Child_B is eating");
}
//这里通过增加一个String类型的参数对eat方法进行方法的重载
public void eat(String food){
System.out.println("Child_b is eating" + food);
}
}
代码运行结果:
I am Child_A
I am Child_B
parent is eating
Child_B is eating
Child_b is eating popcorn
在编写Java程序时如果能注意一些编程细节,会对整个项目的开发带来积极的作用,是你编写的程序更容易的被读懂和维护。在这里推荐在java的开发工具中安装一个
阿里巴巴开发规约插件p3c
,有时间的也可以去阅读《阿里巴巴Java开发手册》
和《effective java》
。
---------------2020年07月08日 未完待续--------------------------------------
标签:system 想法 spring effect sim 如何 继承 输入 数据隐藏
原文地址:https://www.cnblogs.com/mr-ziyoung/p/13256260.html