当前位置: 首页 > news >正文

Java类的概念|包括封装、继承、多态|以及成员方法、权限修饰符、this关键字等类的相关的概念知识|Java必学知识点

🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝

 🥇博主昵称:Jovy. 

🍟博客主页:Jovy.的博客

🥗感谢点赞👍评论🃌

⚇很方便的在线编辑器:Lightly

让我们一起在写作中记录学习吧!

目录

 前言

什么是类?我对类的理解

类的继承、封装、多态

类的封装

 类的继承

 类的多态

成员方法、权限修饰符、this关键字

成员方法

权限修饰符

this关键字

第一种作用

第二种作用

 文末总结


 前言

🎃Java是一个专门的面向对象的语言,在现在还是受到很多人的喜爱,Java工程师是招聘需求最大的岗位 学好Java也是一个专业工程师的必备技能,在面向对象中 类是很重要的,所以本篇文章将会为大家讲解类以及类的相关知识 为大家打好基础!

什么是类?我对类的理解

🎃在一开始我学Python的时候遇到了类与对象 在当时我就听说过许多的说法,而我比较认同一个观点:类是一个图纸,而对象是一个成品!这是类与对象的关系!

类是对于一类事物的归纳,而不是单个事物。就拿狗这一类来举例,类就是封装了狗属性和行为,比如狗的属性有品种、大小、颜色、年龄,而他的行为有吃、跑、睡等,拥有这一系列属性和行为的统归为一类!

类的继承、封装、多态

🎃继承、封装、多态是面向对象设计程序的特点,通过这些特点,我们可以更好的编译程序,使程序编译更加方便

类的封装

🎃封装是面向对象编程的核心思想。通过类来将对象的属性和行为进行封装。通过封装可以达到对用户隐藏细节。封装保证了类内部数据结构的完整性,使用类的用户不能直接操作类的数据结构,避免类内部的数据安全,提高了程序可维护性。封装后其他程序只需通过封装的类所提供的接口进行使用,不需要了解类的内部的内容!

隐藏的细节就类似于你使用电脑键盘,你只要知道如何使用即可,不需要知道键盘的内部工作原理,这个工作原理就是类所封装的细节所在

 类的继承

🎃类的继承是程序设计里面一个很重要的概念!利用继承,可以使我们程序设计的时间大大缩短,使得开发速度增加,也可以避免代码过多的问题!

  • 继承的概念:继承就是由子类继承父类的属性和行为,并且使用 当然也可以另外添加属性和行为,这个说法是最浅显易懂的!
  • 继承的图形化概念:用最形象的图像来说明继承的概念其实很简单,就拿三角形和等腰三角形和等边三角形来说 等腰三角形和等边三角形都具有三角形的性质就是三个角三条边,那么三角形就是父类,等腰三角形和等边三角形就是三角形的子类,然而等边三角形是特殊的等腰三角形,所以在等腰三角形和等边三角形两者之间,等腰三角形是父类,等边三角形是子类!

继承通过extends来实现

package eee;
class Animal {//声明一个动物类
	String name;//定义动物的属性如名字 ,年龄,品种
	int age;
	String kind;
	public void eat () {//定义一个吃的方法
		System.out.println("吃东西");
	}
}
class Dog extends Animal{    //定义一个狗的类来继承动物类
	
}
class Cat extends Animal{    //定义一个猫的类来继承动物类
	
}
 
public class Ass {
	public static void main(String[] args) {
		Dog dog = new Dog();    //实例化一个狗的对象
		dog.name = "大黄";    //可以发现狗的对象可以使用动物类中的属性变量进行赋值
		dog.age = 3;
		dog.eat();    //也可以调用动物类中的成员方法
		System.out.println(dog.name);
		System.out.println(dog.age);
		Cat cat = new Cat();
        cat.name = "大橘";
        cat.age = 2;
		cat.eat();
	}
}

​​​​​​​以上代码就很形象的解释了继承的概念!

 类的多态

🎃多态的概念其实很简单,简单明了的说就是,同一个接口有多种不同的作用。例如你在使用f5的时候在网页中是刷新,但是在Python环境中却是代码运行的键,同一个接口有多个作用那他就是多态。

多态中必然包含继承、重写(下图取自菜鸟教程帮助理解)

在不同的子类调用父类的相同方法显示不同结果就是多态的主要特性

class Shape {
    void draw() {}
}
  
class Circle extends Shape {
    void draw() {
        System.out.println("Circle.draw()");
    }
}
  
class Square extends Shape {
    void draw() {
        System.out.println("Square.draw()");
    }
}
  
class Triangle extends Shape {
    void draw() {
        System.out.println("Triangle.draw()");
    }
}

成员方法、权限修饰符、this关键字

🎃成员方法、权限修饰符、this关键字在类的操作过程中使用十分频繁,是类中必不可缺的一部分,学好他们能让我们类的学习更方便!

成员方法

🎃很简单,方法是放在类的大括号内部的,如图所示!

package eee;

public class This1 {
	public void kali(int aa){		//这是一个kali方法,返回类型为void,所以不能使用return
		
	}
	public static int[] linux(int[] aa) {		//这是一个linux方法,返回一个数组,返回值使用return
		return aa;
	}

	public static void main(String[] args) {
		// TODO 自动生成的方法存根

	}

}

权限修饰符

🎃看标题也是十分容易理解的,权限修饰符就是使这个方法或者是这个类赋予一定的访问权限,以此来达到限制访问的目的,那么我们就要用到权限修饰符!今天呢我们要学习的是三个比较基础的权限修饰符private、protected以及public

本类同一个包下(其他类和子类)不同包下(其他类和子类)
public可见可见可见
protected可见可见不可见
private可见不可见不可见

注意:如果声明类时三者修饰符都未使用默认为public,则这个类预设为包存取范围,即只有一个包中的类可以访问这个类的成员方法或成员方法

this关键字

🎃this关键字的作用分为两个:第一个就是调用类的变量,在类的成员呢变量和参数变量重名的时候就要用到。第二个就是调用类的构造方法,用于两个相同的成员方法 

第一种作用

显而易见,this后的name变量是成员变量,而后面的是形式参数

若按照以下代码,则输出的是形式参数传入的值,这样我们就不能调用成员变量,所以我们要用到this关键字

package eee;

public class Eggcake {
	String name = "abc";
	public void showd(String name) {
	System.out.println(this.name);	//我们会发现这里的name和成员变量的name同一个颜色,说明他对成员变量进行了调用
	}
	public static void main(String args[]) {
	Eggcake e1 = new Eggcake();
	e1.showd("123");
	}

}

第二种作用

第二个作用就是调用其他方法的构造方法

package eee;

public class Jovy {
	int jovy;
	public Jovy(int jovy) {
		this.jovy = jovy;
		System.out.println("Jovy有"+this.jovy+"个");
	}
	public Jovy() {
		this(1);
	}

	public static void main(String[] args) {
		Jovy a1 = new Jovy(5);	//因为上方为构造方法,所以实例化即可调用
		Jovy a2 = new Jovy();	//查看结果发现已经对构造方法进行调用
		
		// TODO 自动生成的方法存根

	}

}

 文末总结

  • 多态的前提:必须有继承和重写
  • this关键字有两个用途:调用成员变量、调用构造方法
  • 权限修饰符不写默认为public

本篇文章是对Java类基础进行总结归纳,更好的辅助Java学习

相关文章:

  • 怎么让机器认识你的手势?机器学习方向
  • Vue项目实战——【基于 Vue3.x + Vant UI】实现一个多功能记账本(登录注册页面,验证码)
  • 【Java面试】概念性的问题怎么答,看完高手的回答一口气答出完整思路,Nosql的理解
  • React初体验-Hello React的组件化方式-React入门小案例
  • 【毕业设计】树莓派单片机墨水屏电子日历系统 - 物联网 嵌入式
  • SEH异常之编译器原理探究
  • UniApp调用SDK原生接口
  • 【数字信号调制】基于PCM编码和QAM调制系统附matlab代码
  • 数字科技对零售业的改造,链动2+1模式系统如何颠覆传统?
  • 集成随机惯性权重和差分变异操作的樽海鞘群算法-附代码
  • A Lightweight and Accurate Recognition Framework for Signs of X-ray Weld Images
  • 【小程序】IDEA实现qq邮件的发送
  • Selenium入门之java爬虫入门
  • 基于C#的五子棋游戏设计
  • 记一次线上环境排查错误过程
  • 收藏网友的 源程序下载网
  • Android系统模拟器绘制实现概述
  • Bootstrap JS插件Alert源码分析
  • canvas 高仿 Apple Watch 表盘
  • CSS选择器——伪元素选择器之处理父元素高度及外边距溢出
  • ECMAScript入门(七)--Module语法
  • iOS小技巧之UIImagePickerController实现头像选择
  • JavaScript创建对象的四种方式
  • maya建模与骨骼动画快速实现人工鱼
  • ViewService——一种保证客户端与服务端同步的方法
  • windows下如何用phpstorm同步测试服务器
  • 高程读书笔记 第六章 面向对象程序设计
  • 深度学习入门:10门免费线上课程推荐
  • 想写好前端,先练好内功
  • 一个普通的 5 年iOS开发者的自我总结,以及5年开发经历和感想!
  •  一套莫尔斯电报听写、翻译系统
  • (1)(1.9) MSP (version 4.2)
  • (2)MFC+openGL单文档框架glFrame
  • (3)选择元素——(17)练习(Exercises)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第7章第3节(封装和窗体)
  • (Spark3.2.0)Spark SQL 初探: 使用大数据分析2000万KF数据
  • (ZT) 理解系统底层的概念是多么重要(by趋势科技邹飞)
  • (二)WCF的Binding模型
  • (四)Android布局类型(线性布局LinearLayout)
  • (转载)虚幻引擎3--【UnrealScript教程】章节一:20.location和rotation
  • .Net FrameWork总结
  • .NET NPOI导出Excel详解
  • .NET 读取 JSON格式的数据
  • .NET 跨平台图形库 SkiaSharp 基础应用
  • /etc/sudoers (root权限管理)
  • @EnableWebMvc介绍和使用详细demo
  • @vue/cli 3.x+引入jQuery
  • [@Controller]4 详解@ModelAttribute
  • [] 与 [[]], -gt 与 > 的比较
  • [2019/05/17]解决springboot测试List接口时JSON传参异常
  • [4.9福建四校联考]
  • [BUG]vscode插件live server无法自动打开浏览器
  • [BZOJ4010]菜肴制作
  • [BZOJ4016][FJOI2014]最短路径树问题
  • [C#][DevPress]事件委托的使用