- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章手把手带你粗略了解Java--类和对象由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
。
。
类在Java中,也叫做自定义类型.
类就是一类对象的统称,对象就是这一类具体化的一个个例 。
可以把类想象成一个模板,把对象想象成实体,比如:建房子,会有图纸,然后根据图纸去建房子,一张图纸可建很多同样的房子。而图纸就是"类",建的房子就是"实体",通过一个类可以产生多个对象 。
。
之前在初始Java篇简单讲述了Java的面向对象性,对比了面向对象和面向过程的不同 。
这里就不多说了 :https://blog.csdn.net/m0_47988201/article/details/118996045?spm=1001.2014.3001.5501. 。
面向对象是思考问题的一种方式,是一种思想 。
总的来说,面向对象就是用代码(类),来描述客观世界事物的一种方式,一个类主要包含一个事物的属性和行为 。
面向对象的好处是:将复杂的事情简单化,只要面对一个对象就行 。
之后,会从这三点进行深入学习:找对象―创对象―使用对象 。
。
①给对象分配内存; 。
②调用合适的构造方法 。
。
OOP:面向对象编程 。
三大特性:继承、封装、多态 。
。
。
在Java中定义类,需要 class 关键字 。
类中包含的内容称为类的成员;属性主要是用来描述类的,称之为类的成员属性或者类成员变量;方法主要说明类具有哪些功能,称为类的成员方法 。
类的成员包括:字段、方法、代码块、内部类和接口等,此处只介绍前三个 。
语法格式:
class ClassName { field ; …// 字段(成员属性) / 成员变量 method;// 行为 / 成员方法 } 。
举例:
class Person{ //字段 String name; int age; //行为 public void eat(){ System.out.println("eat()!"); } public void sleep(){ System.out.println("sleep()!"); }}
。
。
。
在Java中,通过关键字new,配合类名可以实例化一个对象 。
用类类型创建对象的过程,称为类的实例化 。
//实例化对象Person person1 = new Person();Person person2 = new Person();Person person3 = new Person();Person person4 = new Person();
。
通过对象的引用即可访问: 对象的引用 . 成员变量 。
public static void main(String[] args) { //实例化一个对象 Person person = new Person(); //访问对象中的实例成员变量 //通过对象的引用 System.out.println(person.age); System.out.println(person.name);}
。
类名 . 静态成员变量 。
public static void main(String[] args) { Person per = new Person(); System.out.println(Person.size);}
。
。
public void eat(){ System.out.println("eat()!");}public void sleep(){ System.out.println("sleep()!");}
。
静态成员方法public static func(){ System.out.println("static::func()!");}
。
构造方法的方法名和类名相同,且没有返回值 。
构造方法作用: 实例化一个对象 。
class Person{ private String name; private int age; public Person(){ System.out.println("Person!"); } public Person(String name,int age){ this.name = name; this.age = age; System.out.println("Person<String,int>"); }public class Test { public static void main(String[] args) { //写这行代码的时候,就会调用构造方法 Person person1 = new Person(); Person person2 = new Person("Huahua",18); }}
注意:
。
通过对象的引用进行访问:对象的引用 . 实例成员方法 。
public static void main(String[] args) { Person per = new Person(); per.eat(); per.sleep();}
。
类名 . 静态成员方法 。
public static void main(String[] args) { Person.func();}
。
。
Java静态属性和类相似,和具体的实例无关 。
即:同一个类的不同实例共用同一个静态属性 。
class Test{ public int a = 0; public static int count;}
。
public static void main(String[] args) { Test T = new Test(); T.a++; Test.count++; System.out.println(T.a+" "+Test.count);}
输出结果:
分析原因:
。
在方法前应用 ststic 关键字,就把该方法称为静态方法 。
静态成员方法public static func(){ System.out.println("static::func()!");}
注意:
。
this 表示当前对象的引用 。
。
1、this . 属性名称 访问属性,指的是访问类中的成员变量,用来区分成员变量和局部变量 。
2、this . 方法名称 用来访问本类的成员方法 。
3、this();访问本类的构造方法,()中可以有参数的 如果有参数 就是调用指定的有参构造 。
。
访问属性 和 访问方法 。
class Person{ private String name; private int age; //调用属性 public Person(String name, int age) { this.name = name; this.age = age; } //调用方法 public void eat{ System.out.println(this.getName()); } public String getName{ return name; }}
。
访问构造方法 。
class Person{ private String name; private int age; public Person(){ // 访问构造方法 this("Huahua",3); System.out.println("Person!"); } public Person(String name,int age){ this.name = name; this.age = age; System.out.println("Person<String,int>"); }}
注意事项:
。
当我们使用 private 来修饰字段的时候,就无法直接使用这个字段了,这就需要使用 getter 和 setter 方法 。
class Person{ private String name; //setter方法给设施变量的值 public String getName{ return name; } public void setName(String name){ this.name = name; }}
。
。
封装:用 private 来修饰属性 / 方法 。
类和对象阶段,主要研究的就是封装特性 。
。
class Student{ private String name; public int age; public void func1(){ System.out.println("func1()"); }}
如果一个属性 / 方法被 private 修饰之后,限定只能在类当中来使用 。
。
1、修改属性的可见性――设为private 。
2、创建getter / setter方法――用于属性的读写 。
3、在getter / setter方法中加入属性控制语句――对属性值的合法性进行判断 。
。
class Student{ //成员变量私有化 private int age; //setter方法给设施变量的值 public void setAge(int age){ if(age < 0){ System.out.println("年龄无效!"); } else{ this.age = age; } } //提供一个公开的接口 //使用getter方法获取赋值 public int getAge(){ return age; }}public class Test { public static void main(String[] args) { Student student = new Student(); //检验 student.setAge(-10); System.out.println(student.getAge()); }}
。
。
访问修饰符 | 本类 | 同包 | 子类 | 其他 |
---|---|---|---|---|
private | √ | |||
public | √ | √ | √ | √ |
protected | √ | √ | √ | |
默认 | √ | √ |
。
建议:以后在设计类的时候,无特殊要求,所有的属性虽好都设置为私有的private ,一定要体现封装 。
。
使用 { } 定义的一段代码称为代码块 。
重点掌握代码块执行的先后顺序 。
分为四种:
普通代码块:在方法或语句中出现的{ }就称为普通代码块 实例代码块 (构造代码块) 静态代码块 同步代码块 。
。
定义在类中且没有加static关键字的代码块 。
如果存在多个构造代码块,执行顺序由他们在代码中出现的次序决定,先出现先执行 。
特性:
{ System.out.println("实例代码块......");}
。
。
。
static { System.out.println("静态代码块......");}
。
相同点: 都是JVM加载类后且在构造函数执行之前执行,在类中可定义多个,一般在代码块中对一些static变量进行赋值 。
不同点: 静态代码块在非静态代码块之前执行,静态代码块只在第一次 new 时执行一次,之后不在执行。而非静态代码块每new一次就执行一次 。
。
本篇文章就到这里了,希望能给你带来帮助,也希望您能给多多关注我的更多内容! 。
原文链接:https://blog.csdn.net/m0_47988201/article/details/119776526 。
最后此篇关于手把手带你粗略了解Java--类和对象的文章就讲到这里了,如果你想了解更多关于手把手带你粗略了解Java--类和对象的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我是一名优秀的程序员,十分优秀!