【小白的java成长系列】——面向对象基础

【小白的java成长系列】——面向对象基础

今天来说说java面向对象的知识点~事实上。java在其发展过程中可以成功。非常大一部分原因是其面向对象的思想~

1、概念

如今来说面向对象思想。也不是什么新的知识点了,我们知道如今非常多语言都有面向对象的思想了;当然我们还知道如今依然非常火的C语言。事实上还是面向过程的语言。包含近期一段时间也出现了非常多新的思想,比方面向函数,面向分布式,面向…等等一系列的东东,事实上这些都仅仅是一个概念而已~

在面向对象中。实际上还存在着三个基本的特性:
·封装性:保证对外部不可见;
·继承性:继续发扬广大。
·多态性:就属于变来变去;


2、类与对象

好了,概念说完了。来说说类与对象吧。。

类:类是一组共性的产物,是同一类事物的集中表现。
对象:是一种个性的体现,是个体的产物。

这句话非常重要:类是对象的模板。对象是类的实例


3、java中类的定义

java中定义类有两种方式:public class和class

· 使用 public class 声明的类必须与文件名同样,假设使用class 声明的类能够与文件名不同

· 在一个*.java的文件之中,仅仅能存在一个public class。可是能够同一时候存在多个class的定义

· 仅仅要是定义类则要求每一个单词的首字母大写 ——> 约定

比方这边的People.java文件里的定义:

package me.javen.oop;//包名class Person { // 定义类	String name; // 定义属性	int age; // 定义属性	public void say() { // 定义方法		System.out.println("123");	}}public class People { // 定义类	public static void main(String[] args) {// 定义方法	}}

4、java中使用类——>对象

那么上面定义的类,怎么来使用呢?

Person person = null;//在栈内存中声明,此过程叫做声明对象person = new Person();//开辟相应的堆内存空间,此过程叫做实例化对象

事实上能够写成一条语句的,一般在开发中也是一条的~

即:Person person = new Person();

这边是为了说明其内存结构才写成两条的。<span>【小白的java成长系列】——面向对象基础</span>

看下面程序:

	public static void main(String[] args) {// 定义方法		Person person = null;		person = new Person();				//使用类中的属性		person.name="Mr.稻帅";		person.age=24;				person.say();	//用法	}

这样子,类和对象的基本使用就基本介绍完毕了。。

以下来介绍构造方法

5、构造方法

定义:在一个类中定义的方法名称与类名称同样。且无返回值声明的方法,称为构造方法。

还是看到刚刚的代码:person = new Person();

事实上在new的过程中,new的是Person类的默认构造方法。

记住:在一个类中假设没有明白的定义一个构造方法的话,则会自己主动生成一个无參的,什么都不做的构造方法。假设类中存在构造方法,则在new的过程中就必须使用定义了的构造方法。

这句话对于小白,理解起来可能有点困难,分号前面的可能好理解一点..參考Person就能理解前半句。后半句关于使用构造方法可能就有点困难了。事实上也不难,看以下程序:

<span>【小白的java成长系列】——面向对象基础</span>

看到了不,eclipse的java语法校验会报错,报的是未定义Person()这样一个构造方法,而在Person类中定义的是Person(String name, int age)这种一个构造方法。。

当然构造方法能够定义多个的~

class Person { // 定义类	String name; // 定义属性	int age; // 定义属性		public Person(String name, int age) {// 定义两个參数的构造方法	}	public Person(String name) {// 定义一个參数的构造方法	}	public Person() {// 定义无參构造方法	}	public void say() { // 定义方法		System.out.println("姓名:" + name + "。年龄:" + age);	}}

这样,构造方法也算是说完了。。

以下来说说封装性。

6、封装性

从定义上看:封装性就是指类内部的定义对外部不可见。

作用是为了保护数据的安全性~

那什么叫做对外部不可见?

看代码:

	private String name; // 定义属性
	private int age; // 定义属性


<span>【小白的java成长系列】——面向对象基础</span>

在使用的过程中就会有错误,提示的是没有权限訪问(对外部不可见)

以上的一种形式就叫做封装~

那么,name和age属性怎么訪问了?

package me.javen.oop;//包名

class Person { // 定义类
	private String name; // 定义属性
	private int age; // 定义属性

	/*
	 * 对封装的属性使用setter和getter方法
	 */
	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;
	}

	public Person(String name, int age) {// 定义两个參数的构造方法
	}

	public Person(String name) {// 定义一个參数的构造方法
	}

	public Person() {// 定义无參构造方法
	}

	public void say() { // 定义方法
		System.out.println("姓名:" + name + ",年龄:" + age);
	}
}

public class People { // 定义类
	public static void main(String[] args) {// 定义方法
		Person person = null;
		person = new Person();// 添加了无參构造方法
		// 通过setter方法设置值
		person.setName("Mr.稻帅");
		person.setAge(24);

		person.say(); // 用法
		//通过getter方法获取封装了的属性的值
		System.out.println("姓名:" + person.getName() + ",年龄:" + person.getAge());
	}

}


注意:

1、属性或方法不希望被外部所訪问的话。则能够使用privatekeyword声明;

2、在开发过程中。假设不是特殊情况,java类中定义的属性基本都要求设置封装。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/119274.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • javaCV开发详解之2:推流器和录制器实现,推本地摄像头视频到流媒体服务器以及摄像头录制视频功能实现(基于javaCV、FFMPEG和openCV)「建议收藏」

    javaCV开发详解之2:推流器和录制器实现,推本地摄像头视频到流媒体服务器以及摄像头录制视频功能实现(基于javaCV、FFMPEG和openCV)「建议收藏」javaCV系列文章:javacv开发详解之1:调用本机摄像头视频javaCV开发详解之2:推流器实现,推本地摄像头视频到流媒体服务器以及摄像头录制视频功能实现(基于javaCV-FFMPEG、javaCV-openCV)javaCV开发详解之3:收流器实现,录制流媒体服务器的rtsp/rtmp视频文件(基于javaCV-FFMPEG)javaCV开发详解之4:转流器实现(也可作…

    2022年6月6日
    74
  • Java SSM练手小项目-手把手带你搭建一个基于SSM框架的人力资源管理后台系统

    Java SSM练手小项目-手把手带你搭建一个基于SSM框架的人力资源管理后台系统前言相信很多小伙伴在学习完SSM三大架构以后,不知道该如何找到一个简单容易上手的项目进行实战训练,经常在博客上看到一个不错的项目下载下来以后全部都是代码,无处下手。因此本文力求以最简单易懂的项目结构和代码搭建一个还较为完整(即从登录到退出的整个流程)的后台系统。(适合新手)整个项目的操作流程动态图如下(由于CSDN对上传图片大小有限制,这里录制的gif画面很不清晰,点击图片查看更清晰):…

    2022年6月15日
    30
  • 同一台电脑同时使用gitHub和gitLab

    同一台电脑同时使用gitHub和gitLab工作中我们有时可能会在同一台电脑上使用多个 git 账号 例如 公司的 gitLab 账号 个人的 gitHub 账号 怎样才能在使用 gitlab 与 github 时 切换成对应的账号 并且免密 这时我们需要使用 ssh git 可以选择使用 https 方式 ssh 方式两种方式通信 但使用 https 方式时 每次 fetch 和 push 代码都需要输入账号和密码 以 windows 为例 进行如下操作

    2025年10月24日
    0
  • stringbuffer和stringbuilder是什么_Java编程

    stringbuffer和stringbuilder是什么_Java编程字符串常量池什么是字符串常量池?JVM为了减少字符串对象的重复创建,其维护了一块特殊的内存,这段内存被称为字符串常量池(存储在方法区中)。具体实现当代码中出现字符串时,JVM首先会对其进行检查。如果字符串常量池中存在相同内容的字符串对象,则将这个对象的地址返回。如果字符串常量池中不存在相同内容的字符串对象,则创建一个新的字符串对象并放入常量池。newString(“str…

    2025年11月21日
    5
  • vsftp用户名密码配置_win10ftp服务器设置用户名和密码

    vsftp用户名密码配置_win10ftp服务器设置用户名和密码huangyandong于2011-05-1013:06:11发表:打开vsftpd的配置文件,redhat的配置文件默认为/etc/vsftpd.conf:要想使用本地用户登录的话则只需更改下列选项local_enable改为YESchroot_local_user=YES#当设置为YES时,本地用户登录后就自动转到他们的用户主目录中去。#注意!:该选项用安全问题,特别是当用户有上传文…

    2022年9月1日
    5
  • python列表和元组的应用,Python中列表和元组的使用方法和区别

    python列表和元组的应用,Python中列表和元组的使用方法和区别一 二者区别列表 1 可以增加列表内容 append2 可以统计某个列表段在整个列表中出现的次数 count3 可以插入一个字符串 并把整个字符串的每个字母拆分当作一个列表段追加到列表当中 extedn4 可以查询某个列表段在整个列表的位置 index5 可以在指定位置插入一个列表段 insert6 可以删除列表的最后一个列表段 pop7 可以删除指定列表中的某个列表段 remove8 可以正向反

    2025年11月13日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号