Java基础——面向对象(封装——继承——多态 )
对象
对象:
是类的实例(实现世界中 真 实存在的一切事物 可以称为对象)
类:
类是对象的抽象描述
步骤:
1、定义一个类 (用于 描述人:)
( * 人:有特征和行为)
2、根据类 创建对象 ---- new
* 对象类型 对象名 = new 对象类型();
* 一般情况下 只有对象 才能点出 属性和方法
面向对象的的三个特征:封装 继承 多态
封装:将类的属性私有化,提供公共的get/set访问方法
例
//对属性的封装
private String name;
private int age;
// 成员方法
// getXxx()/setXxx()
//对该对象对外界提供方法的封装
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;
}
注:get和set是成对出现的
封装的作用
① 对象的数据封装特性彻底消除了传统结构方法中数据与操作分离所带来的种种问题,提高了程序的可复用性和可维护性,降低了程序员保持数据与操作内容的负担。
②对象的数据封装特性还可以把对象的私有数据和公共数据分离开,保护了私有数据,减少了可能的模块间干扰,达到降低程序复杂性、提高可控性的目的。
继承:用新类(子类、派生类)继承已有类(父类 超类 基类), 新类可以直接使用已有类的公有的方法和属性
作用:提交代码复用率 减少不必要的代码
关键字:extends
继承只能单一继承(父类可以有很多的子类 但是子类只能有一个直属父类)
子类重写父类的方法后 会优先调用子类自己方法
继承主要实现重用代码,节省开发时间。
1、C#中的继承符合下列规则:
- 继承是可传递的。如果C从B中派生,B又从A中派生,那么C不仅继承了B中声明的成员,同样也继承了A中的成员。Object类作为所有类的基类。
- 派生类应当是对基类的扩展。派生类可以添加新的成员,但不能除去已经继承的成员的定义。
- 构造函数和析构函数不能被继承。除此之外的其它成员,不论对它们定义了怎样的访问方式,都能被继承。基类中成员的访问方式只能决定派生类能否访问它们。
- 派生类如果定义了与继承而来的成员同名的新成员,就可以覆盖已继承的成员。但这并不因为这派生类删除了这些成员,只是不能再访问这些成员。
- 类可以定义虚文法、虚属性以及虚索引指示器,它的派生类能够重载这些成员,从而实现类可以展示出多态性。
2、new关键字
如果父类中声明了一个没有friend修饰的protected或public方法,子类中也声明了同名的方法。则用new可以隐藏父类中的方法。(不建议使用)
3、base关键字
base 关键字用于从派生类中访问基类的成员:
- 调用基类上已被其他方法重写的方法。
- 指定创建派生类实例时应调用的基类构造函数。
例
class Person {
public Person() { }
} class Man extends Person {
public Man() { }
}
类Man继承于Person类,这样一来的话,Person类称为父类(基类),Man类称为子类
- 继承只能单一继承(父类可以有很多的子类 但是子类只能有一个直属父类)
- 子类重写父类的方法后 会优先调用子类自己方法
- 如果两个类存在继承关系,则子类会自动继承父类的方法和变量,在子类中可以调用父类的方法和变量
附:
{}:代码块
{}定义在方法中:普通代码块
{}定义在类中:构造块
{}定义在类中并且被static所修饰:静态代码块
访问修饰符:4个
public:整个工程都可以访问
Producted:同一个包下 或者 异包下的子类
默认(什么都不写):同一个包下
Private:当前类
多态:同一种实例多种形态
多态出现的的条件:在继承关系中
- 继承关系中方法的重写,同一个类下方法的重载
- 父类的引用指向子类的实体(继承关系中发生向上转型,向下转型)
多态:父类型的引用可以指向子类型的实体(对象)
//向上转型,将子类型转换为父类型
Person person=new Student();//当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;
//向下转型,将父类型转换为子类型
Student stu =new (Student)Person;//如果想要调用子类中有而父类中没有的方法,需要进行强制类型转换
Java基础——面向对象(封装——继承——多态 )的更多相关文章
- php面向对象 封装继承多态 接口、重载、抽象类、最终类总结
1.面向对象 封装继承多态 接口.重载.抽象类.最终类 面向对象 封装继承多态 首先,在解释面向对象之前先解释下什么是面向对象? [面向对象]1.什么是类? 具有相同属性(特征)和方法(行为)的一 ...
- python面向对象(封装,继承,多态)
python面向对象(封装,继承,多态) 学习完本篇,你将会深入掌握 如何封装一个优雅的借口 python是如何实现继承 python的多态 封装 含义: 1.把对象的属性和方法结合成一个独立的单位, ...
- Java三大特性(封装,继承,多态)
Java中有三大特性,分别是封装继承多态,其理念十分抽象,并且是层层深入式的. 一.封装 概念:封装,即隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别:将抽象得到的数据 ...
- Java基础笔记-抽象,继承,多态
抽象类: abstract修饰 抽象方法必须定义在抽象类中,抽象类不能创建对象. 在抽象方法中可以不定义抽象方法,作用是:让该类不能建立对象. 特点是: 1.定义在抽象类中 2.方法和类都用abstr ...
- 九、Java基础---------面向对象封装、继承、多态
封装 1.1 基本概念 封装(encapsulation)是面向对象三大特征之一,它是指将对象的状态信心隐藏在对象的内部,不允许外部直接进行访问,而是通过该类提供的方法来实现对内部信息的操作和访问. ...
- java类的封装 继承 多态
1.猜数字小游戏 package cn.jiemoxiaodi_02; import java.util.Scanner; /** * 猜数字小游戏 * * @author huli * */ pub ...
- Java基础语法<八> 继承 多态 抽象 反射
1.超类和子类 超类和子类 父类与子类 多态: 一个对象变量可以指示多种实际类型的现象称为多态 一个变量可以引用父类对象,也可以引用其子类对象,这就是多态. 不能将一个超类的引用赋给子类变量,因为调用 ...
- Java基础--面向对象编程4(多态)
1.多态的概念 多态是指程序中的同一引用类型,使用不同的实例而执行结果不同的. 同一个类型:一般指父类 不同的实例:不同的子类实例 执行结果不同:针对同一方法执行的结果不同 package cn.sx ...
- java面向对象(封装-继承-多态)
框架图 理解面向对象 面向对象是相对面向过程而言 面向对象和面向过程都是一种思想 面向过程强调的是功能行为 面向对象将功能封装进对象,强调具备了功能的对象. 面向对象是基于面向过程的. 面向对象的特点 ...
随机推荐
- 浅析java(多方面解读)
昨天我简单的说了一下我的编程学习之路.假设你热爱编程.而不是仅为了赚钱,我想我的经历或许会给你带来一定的启示,假设你还没有看.请先慢慢读完我的编程学习之路,您肯定会有还有一番体会的.. 好了.废话不多 ...
- MySQL通过函数获取字符串汉字拼音首字母大写字符串
DELIMITER $$ DROP FUNCTION IF EXISTS `Fun_GetPY`$$ CREATE FUNCTION `HIS`.`Fun_GetPY` (in_string VARC ...
- Codeforces Round #320 (Div. 2) [Bayan Thanks-Round] B. Finding Team Member 排序
B. Finding Team Member ...
- bzoj2709: [Violet 1]迷宫花园
二分答案,spfa check就行了. gb题卡精度. #include<cstdio> #include<iostream> #include<cstring> ...
- Cordova 开发 App
Cordova 是一个开源的移动开发框架.允许你用标准的 Web 技术——HTML5,CSS3 和 JavaScript 做跨平台开发.应用在每个平台的具体执行被封装了起来,并依靠符合标准的 API ...
- 【POJ 1364】 King
[题目链接] 点击打开链接 [算法] 差分约束系统 [代码] #include <algorithm> #include <bitset> #include <cctyp ...
- FastText 分析与实践
一. 前言 自然语言处理(NLP)是机器学习,人工智能中的一个重要领域.文本表达是 NLP中的基础技术,文本分类则是 NLP 的重要应用.在 2016 年, Facebook Research 开源了 ...
- 使用inet_ntoa() 时编译提示错误:
char*inet_ntoa(struct in_addr in)将一个IP转换成一个互联网标准点分格式的字符串. 我把 inet_ntoa 需要的头文件加上去: #include <sy ...
- web自动化测试—selenium游览器多窗口操作
# coding=utf-8'''web游览器多窗口操作: 获取当前窗口句柄 current_window_handle 获取所有窗口句柄 window_handles 切换窗口 switch_to_ ...
- 乐搏讲自动化测试-python语言特点及优缺点(5)
相信小伙伴们都知道,随着软件测试行业的发展和进步自动化测试已经成为必然.在竞争日益激烈的市场环境中也是你升职加薪的利器. 所以,小编决定从今天起!将要系统.连续.高质量的持续更新「整套自动化测试」文章 ...