Java面向对象编程

经过半个多月的学习,初步了解了Java面向对象的知识。面向对象的三大基本特征:封装、继承、多态。

封装隐藏了类的内部实现机制,从而可以在不影响使用者的前提下改变类的内部结构从而保护数据。

继承是为了重用父类代码,同时为实现多态性做准备。

多态性是发送消息给某个对象,让该对象自行决定响应何种行为。

概念

面向过程是一种自上而下的程序设计方法,主要思路专注于算法的实现

过程式的特征是以函数为中心,用函数作为划分程序的基本单位;数据在过程式设计中处于从属的位置

过程式设计的优点是易于理解和掌握,这种逐步细化问题的设计方法与大多数人的思维方式比较接近

面向对象是一种自下而上的程序设计方法,以数据为中心,类是表现数据的单位,是划分程序的基本单位

面向对象设计是自下而上的特性,允许开发者从问题的局部开始,在开发过程中逐步加深对系统的理解。需求变化会作用到系统开发本身,形成一种螺旋式的开发方式

面向对象设计中,类封装了数据,而类的成员函数作为其对外的接口,抽象地描述类,用类将数据和操作这些数据的函数放在一起,这就是面向对象设计方法的本质

对象

对象是要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。对象是一个客观存在的、唯一的实体,是一个类的动态实例,拥有自己的标识、数据与行为。

对象的状态和行为

对象具有状态,一个对象用数据值来描述它的状态

对象还有操作,用于改变对象的状态,对象及其操作就是对象的行为

对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中

对象的要素

属性:用于描述对象静态特性(结构特性)的一个数据项,描述一个人可用姓名、性别、身份证号等属性

方法:用于描述对象动态特性的一个操作系列

类是具有共同属性和行为的对象的抽象,具有相同特性(数据元素)和行为(功能)的对象的抽象就是类

对象的抽象是类,类的具体化就是对象,也可以说类的实例是对象

类实际上就是一种数据类型

封装

在面向对象程式设计方法中,封装Encapsulation是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。

封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问

封装最主要的功能在于能修改自己的实现代码,而不用修改那些调用代码的程序片段·适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。

class Student{
    //成员属性,私有成员
    private int age;
    //成员方法
    public int getage(){
        return this.sex;
}
    //没有提供set方法,不允许修改age

}

封装的好处:

良好的封装能够减少耦合,类的内部结构可以自由修改,可以成员进行更精准的控制,隐藏信息,实现细节。

访问的控制限定词:private,protected,public

关键词
当前类内同包子类到处

private

T
无范围限定词TT
protectedTTT
publicTTTT

继承

继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。

继承的优点

将所有子类的共同属性放入父类,实现代码共享,避免重复,提高开发效率

继承的缺陷

父类发生变化,子类就必须改变

继承破坏了封装,对于父类而言,它的实现细节对于子类来说是透明的

继承是一种强耦合关系

关键字package

包是类或接口的容器,是一个用于避免命名冲突的名空间,是一个逻辑命名的概念,与具体的物理位置无关

包是类的组织方式,提供名空间和访问控制

包的使用方法:

import java.util.Date;//使用包

public class A{
    public static void main(String[] args){
        Date now = new Date();   //使用类的简称Date
    }
}

public class A{
    public static void main(String[] args){
        java.util.Date now = new java.util.Date();//使用包的全称,不需要import
    }
}

多态

通俗的讲,就是同一个东西表现出多种状态,在面向对象的描述中就是同一个函数接口,实现多种不同的表现方式。

使用方法:

public class Test {
	public static void main(String[] args) {
		parent ss = new son();
		ss.pp();
	}
}

class parent{
	protected Long id = 100L;

	public void pp() {
		System.out.println(this);//this指代当前对象,指new什么就是什么
		System.out.println(id);
		this.dd();              //this. 用于调用当前类对象的其它方法
	}
	public void dd() {
		System.out.println("parent--666");
	}
}

class son extends parent {
	protected String id = "abc";
	public void pp() {
		System.out.println(id);
//		this.dd();	         //this. 引用dd方法
		super.pp();          //super. 引用父类中pp方法
//	    System.out.println(super.id);
	}

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值