java中面向对象的三大特性:封装、继承、多态和关键字instanceof

1、封装:

使用private关键字,使得外界不能够直接访问类的属性;

提供setter和getter方法进行设置和获取;

好处:提升程序的安全性,让外界不能够直接进行访问;还可以对设置的属性进行输入限制;

public class anli1 {
private String name;
private String sex;
public String getName() {
 return name;
}
public void setName(String name) {
 this.name = name;
}
public String getSex() {
 return sex;
}
public void setSex(String sex) {
 this.sex = sex;
}
}

类中的属性name和性别sex进行了封装,在其它的类中不能够直接访问;

如果想要设置性别设置只能是男和女可以在setSex()方法中进行限制;

public void setSex(String sex) {
 if(sex.equals("男")||sex.equals("女")){
 this.sex = sex;
 }else{
  System.out.println("您设置的性别有误");
 }
}

在main中进行测试;

public static void main(String[] args) {
 anli1 a1=new anli1();
 anli1 a2=new anli1();
 a1.setSex("女性");
 a1.setName("a1");
 System.out.println(a1.getName()+a1.getSex());
 
 a2.setSex("女");
 a2.setName("a2");
 System.out.println(a2.getName()+a2.getSex());
}

结果:

您设置的性别有误
a1null
a2女

从输出结果中可以看到a1设置sex为女性,设置失败,而a2设置sex为nv成功了;

这样可以方便的进行输入限制,当然如果设置其他的限制也是一样的;

2、继承:extends

名如其意:便是继承父类中的属性和方法:

作用:减少代码的臃肿,提升代码的复用性;

注意:a、不能继承父类中的构造方法;b、不能继承父类中的private属性和方法;

新建一个anli2继承上面的案例1,并在里面新建立一个独有的方法;

public class anli2 extends anli1{
 
public void look(){
 System.out.println("我会看门");
}

}

在main中测试:

anli2 b1=new anli2();
 b1.setName("b1");
 b1.setSex("男");
 System.out.println(b1.getName()+b1.getSex());

结果:

b1男

子类可以调用父类的除private外的属性和方法;

3、多态

一个事物的多种状态叫做多态。例如水有三种形态气态液态和固态;

在类中;由于子类继承了父类所有也使得一个事物具有了多种状态;

例如anli2继承了anli1,把anli1换成animal动物类anli2换成dog狗类

可以说,狗既能是一只狗,也可以说是一只动物;有两种说法;

利用多态的形式有两种:

a、向上转型:把子类的对象指向父类的引用类型;

animal a1=new dog();

但是当狗作为一只动物的时候是不能够调用狗类的独有方法look()如果需要用到父类独有的方法需要向下转型;

b、向下转型:把指向父类的引用转换成指向子类的引用

animal a1=new dog();//向上转型
 dog b2=(dog)a1;//向下转型
 b2.look();//子类独有的方法

注意要想向下转型必须要先向上转型;不能够直接把父类的引用指向子类的引用;

作用:可以解耦,减少耦合性;什么是耦合性?就是非它不可,就像我们的手机如果充电器坏掉了,如果只能用厂家原配充电器,

那么实用性就太差了,不符合需求;

解耦在类中的应用:如果父类有多个子类,在不知道子类是哪一个的情况下,可以把传入的参数设置为父类,那么它所有子类都可以传进参数,

这里用到了向上转型,一般结合instanceof关键字使用;

4. instanceof

作用:用于判断传入的引用类型是否属于给定的类型,一般是判断父类转型中的判断;

举例:新建一个service类,建立一个方法,传入参数animal

public class Service {
public void fun(animal a){//参数向上转型
 if(a instanceof dog){//判断传入的参数是否是dog
  ((dog) a).look();//向下转型
 }
}
}

在main方法中测试:

animal a1=new dog();
 Service s=new Service();
 s.fun(a1);

运行结果:

我会看门

原文地址:https://www.cnblogs.com/sw-123/p/9326303.html

时间: 2024-07-31 04:49:44

java中面向对象的三大特性:封装、继承、多态和关键字instanceof的相关文章

面向对象的三大特性---封装继承多态

面向对象的三大特性---封装继承多态 首先我们来创建一个控制台程序 新建一个父类Person 创建一个子类继承父类Person 子类: main函数: 输出结果: 根据结果显示创建子对象,首先调用父类的构造函数在调用子类的构造函数. 继承的传递性 例如: A:B,B:C,则A:C ⅰ.继承过来之后被隐藏,有意隐藏加一个关键字"new",如果加了关键字"new",就告诉子类,父类里面的sayHi只能被隐藏,不能被覆写  ⅱ.继承过来之后被覆写/重写,覆写需要在父类里面

(1) 深入理解Java面向对象三大特性 封装 继承 多态

转眼已经工作快6年了,最开始做了2年J2EE:然后整了2年的数据仓库,主要是Cognos的报表开发:现在从事4G LTE核心网的开发,用的语言任然是Java,但写代码的机会不多,基本都是看代码找BUG,偶尔做点new feature也是在比较成熟的框架上复制.粘贴.修改,大部分时间还是在理解业务,钱多.事少.离家近,当时来这家公司图的是后面2点,2年过去了,英文水平有所提升,对敏捷开放也有一定的了解,但技术方面明显退步了或者说没有进步吧,本来以前也不怎么好,因为工作上用不到,自己也没怎么学习,所

面向对象三大特性(封装/继承/多态)

引入:在面向对象思想中,有三大特性,封装  继承  多态. 思考:我们在使用类和对象实现编程的时候,到底是遵循这什么样的逻辑呢?为什么要这样规范类呢? 引入:面向对象很重要的思想就是隐藏,即外部不知道类内部是如何实现业务逻辑的,只管调用和使用结果,这个就是面向对象三大特性之一:  封装 1.封装[掌握] 定义:封装,字面意思就是将内容装到某个容器中,并进行密封保存,在面向对象思想中,封装指数据和对数据的操作捆绑到一起,形成 对外界的隐藏,同时对外提供可以操作的接口. 1.数据:即要操作的数据,在

Java面向对象三大特性 封装 继承 多态

1.封装 封装的定义: 首先是抽象,把事物抽象成一个类,其次才是封装,将事物拥有的属性和动作隐藏起来,只保留特定的方法与外界联系 为什么需要封装: 封装符合面向对象设计原则的第一条:单一性原则,一个类把自己该做的事情封装起来,而不是暴露给其他类去处理,当内部的逻辑发生变化时,外部调用不用因此而修改,他们只调用开放的接口,而不用去关心内部的实现 举例: public class Human { private int age; private String name; public int get

面向对象三大特性:封装,继承,多态(一,封装和继承)

封装.继承和多态是面向对象程序设计的三个核心特性. 封装是面向对象技术中的一个重要概念,是一种信息隐藏技术,它体现了面向对象程序设计的思想. 继承是面向对象程序设计方法的一个重要手段,通过继承可以更有效地组织程序结构,明确类间的关系,育雏利用已有的类来完成更复杂.更深入的程序开发. 多态允许以一种统一的风格处理已存在的变量和相关的类,多态性使得向系统增加功能变的容易. 一.封装 封装的含义是:类的设计者把类设计成一个黑匣子,使用者只能看见类中定义的公共变量和公共方法,而看不见方法的具体实现细节,

面向对象三大特性:封装,继承,多态(二、多态)

多态 一,多态的概念 多态(polymorphism), 是指一个名字可以有多种语义.在面向对象语言中,多态是指在一棵继承树中的类中可以有多个同名但不同方法体及不同形参的方法.通常有两种途径实现多态:方法的重载和覆盖. 多态性允许以统一的风格处理已存在的变量及相关的类.多态性使得向系统里增加新功能变得容易.继承性和多态性是降低软件复杂性有有效技术. 二,多态的实现 1.方法的重载 方法重载时: 参数必须不同.参数个数不同或类型不同. 返回值可以相同,也可以不同. 重载的价值在于它允许通过使用一个

Java中面向对象的三大特性之封装

封装 封装(英语:Encapsulation)是指一种将抽象性函式接口的实现细节部份包装.隐藏起来的方法. 封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问. 要访问该类的代码和数据,必须通过严格的接口控制. 封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段. 适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性. 封装的优点 1. 良好的封装能够减少耦合. 2. 类内部的结构可以自由修改. 3. 可以对成员变量进行更精确的

黑马程序员————java中面向对象的三大特性

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 面向对象的思想是将一切事物看出由属性,方法,构造器,代码块,内部类等五个方面构成,只要事物在这五个方面有相似之处就可以归为一类,类与类之间则是通过封装,继承,多态来体现. 首先说封装,很简单的思想,上帝创造我们出来没有给我们翅膀,那我们即

Python全栈开发——面向对象的三大特性(继承 &amp; 多态 &amp;封装)

1.继承 1.两层意思改变和扩展(详细看随笔继承和组合) 2.多态(体现在运行时的状态) 1.不同的类可以调用相同的方法,得到不同的结果 2.实际上是继承的一种体现机制 class H2o: def __init__(self,name,temperature): self.name=name self.temperature=temperature def turn_ice(self): if self.temperature<0: print('温度太低,变成[%s]' %self.name