IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> JAVA面向对象编程的三大特性 -> 正文阅读

[Java知识库]JAVA面向对象编程的三大特性

面向对象

面向对象和面向过程

面向对象编程(?Object Oriented Programming)过程编程是关于编写对数据执行操作的过程或方法,而面向对象的编程是关于创建包含数据和方法的对象。面向对象的三大特性为:封装性(Encapsulation)、继承性(Inherit)、多态性(Polymorphism)。

关于面向对象与面向过程的知识不再做仔细介绍,具体可以看这篇文章:

面向对象与面向过程语言的区别_bieleyang的博客-CSDN博客_面向对象和面向过程的区别

?封装性(Encapsulation)

封装(Encapsulation)是面向对象三大特征之一,对于程序合理的封装让外部调用更加方便,更加利于写作。同时,对于实现者来说也更加容易修正和改版代码。

1.封装的优点

  • 提高代码的安全性
  • 提高代码的复用性
  • 便于修改内部代码,提高代码可维护性。
  • 便于调用者使用,便于扩展和协作

2.封装的解释

class Student {
	String name;//声明姓名属性
	int age;//声明年龄属性
	void read() {
		System.out.println("大家好,我是"+name+",年龄是"+age);
	}
}

	public class OOP4{
		public static void main(String[] args) {
			Student stu=new Student();//创建学生对象
			stu.name="理博";//为name赋值
			stu.age=-20;//为age赋值
			stu.read();//调用对象的方法
	}
}

在此代码中为学生对象的age赋值为-20,在程序中不会出现编译错误,但在现实生活中,-20显然是一个不合理的年龄。为避免这种情况的出现,在设计Student类时,会对成员变量做一些访问的限制,不允许外界随意访问,这就需要通过封装来实现。

3.封装的实现

class Student {
	private String name;//声明姓名属性
	private int age;//声明年龄属性
	public int setAge;
	
	public void getName() {
		return name;
	}
	
	public void setName(String name) {
		this.name=name;
	}
	
	public int getAge() {
		return age;
	}
	
	public void setAge() {
		if(age<=0) {
			System.out.println("输入的年龄有误");
		}
		else {
			this.age=age;
		}
	}
	
	public void read() {
		System.out.println("大家好,我是"+name+",年龄是"+age);
	}
}

	public class OOP4{
		public static void main(String[] args) {
			Student stu=new Student();//创建学生对象
			stu.setName("理博");//为name赋值
			stu.setAge=(-20);//为age赋值
			stu.read();//调用对象的方法
	}
}

在此代码中,使用private关键字将name和age属性变为私有变量,并对外界提供公有的访问方法。当调用setAge()方法传入age时,会对age进行判断,符合条件才会进行传入。

4.权限修饰符

修饰符同一个类同一个包中子类所有包的所有类
private? ? ? ?*
默认? ? ? ?*? ? ? ? ?*
protected? ? ? ?*? ? ? ? ?*? ?*
public? ? ? ?*? ? ? ? ?*? ?*? ? ? ? ? ? ?*

继承性(Inherit)

31.继承的概念

在JAVA中,类的继承是指在一个现有类的基础上去构建一个新的类,构建出来的新的类称为子类,现有的类称为父类。在程序中,如果想声明一个类继承一个类,就需要用到extends关键字。

2.继承的实现

class Animal {
	private String color;
	private int age;
	public Animal() {
		
	}
	public Animal(String color, int age) {
		this.color=color;
		this.age=age;
	}
	public void eat() {
		System.out.println(".....eating.....");
	}
	public void sleep() {
		System.out.println(".....sleeping.....");
	}
	public void introduce() {
		System.out.println("color"+color+",age"+age);
	}
}
class Dog extends Animal {
	private String nickName;

    public Dog(){

    }
    public Dog(String color,int age,String nickName){
        super(color,age); 
        this.nickName=nickName;
    }

		
	public void guard(){
        System.out.println(".....Dog guarding.....");
    }
}
public class Test {
	public static void main(String[] args) {
        Dog dog = new Dog("黑色",3,"小黄");
        dog.eat();
        dog.sleep();
        dog.introduce(); 
        dog.guard();

        }
}

3.继承注意事项向

  • 类只支持单继承,不允许多重继承
  • 多个类可以继承一个父类
  • 一个类的父类可以继承另外的父类
  • 子类和父类是相对而言的

4.方法的重写

class Animal {
	void shout(){
		System.out.println("动物发出叫声");
	}
}

class Dog extends Animal{
	void shout() {
		System.out.println("汪汪汪...");//重写父类中的Animal方法
	}
}

public class oop3{
	public static void main(String[] args) {
		Dog dog=new Dog();
		dog.shout();//调用dog重写的shout()方法
	}
}

在此代码中,Dog类继承了Animal类,并对父类的shout()方法进行重写。

在子类重写父类方法时,不能使用比父类中被重写方法更加严格的访问权限,如果权限缩小,在编译中会报错。

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-11-20 18:15:31  更:2021-11-20 18:15:57 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 2:53:06-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码