javaSE面向对象初级01
2021-07-03 05:05
标签:idt 图片 相等 false col string 观察 特征 out 作者:gqk 面向对象(OOP): 什么是面向对象:万物皆是对象(扯淡) 面向对象是一种编程思想,事物都有自己的属性,方法,以人为的思想来解决我们开发中的问题 面向对象的特征: 封装性:保证对外部不可见。 类与对象(重点) 在整个的面向对象之中,实际上最重要的就是类与对象的关系, 既然类和对象是核心的基础部分,那么两者之间存在着怎样的关系呢? 类:类是一组共性的产物,是同一类事物的集中表现。 对象:是一种个性的体现,是个体的产物。 对象中的所有操作行为都由类决定,所以,在使用中只要是类定义出的操作对象都可以应用,而如果类没有定义出 的操作,对象肯定无法使用 类是对象的模板,对象是类的实例 类与对象的使用: 在 Java 中可以使用 class关键字来定义一个类,在类中有两大组成部分:属性(变量)、 方法。(分析内存地址) 那么下面来进一步分析以上代码的每一步操作: · 对象产生:Person per = new Person() ; 既然存在了关键字 new,而且类又属于引用数据类型,那么肯定现在 就开辟了相应的栈及堆内存空间,而且以上的代码可以拆分成两步: |- 声明对象:Person per = null ; 在 栈内存中声明 |- 实例化对象:per = new Person() ; 开辟对应的堆内存空间 只要存在了关键字 new 就表示永远会 开辟新的内存空间 栈内存保存的是对堆内存的引用地址,而堆内存中保存的是每一个对象所拥有的属性,而全局代码区之中保存的是 所有类中的方法,表示公共调用 对象的引用传递(重点) 所谓的引用传递指的就是一个堆内存空间,可以同时被多个栈内存所指向, 那么类本身也是一样的,即:一块堆内存可以同时被多个对象所同时指向(演示内存传递) 情况比较特出:画图演示 不被引用的交给 gc处理 封装性(重点) 装性属于面向对象的第一大特性,所谓的封装性就是指类内部的定义对外部不可见。 以后只要是属性就必须进行封装,封装之后的属性必须通过 setter 和 getter 设置和取得。 强调:在一个类中所有的方法是允许互相调用的,如果非要强调是本类中的方法的话,则在调用的方法前增加一个 “this”关键字,表示的是本类中的方法。 构造方法(重点) 构造方法的定义:在一个类中定义的方法名称与类名称相同,且无返回值声明的方法,称为构造方法。 Person per = new Person() ; 以上的 Person()就表示的是一个构造方法,此构造方法属于默认的构造方法。 所有的构造方法是在对象使用关键字 new 进行实例化的时候调用的,而且每次使用关键字 new 开辟新的 堆内存空间时,构造方法都要被调用。 当一个类中已经明确的定义了一个构造方法的时候,则无参构造方法将不再自动生成,也就是说一个类永远都会保 证至少有一个构造方法 构造方法的作用: 对象的创建; 属性的初始化; 匿名对象:匿名对象就是表示没有名字的对象。 public class NonameDemo { public static void main(String args[]){ new Person("张三",30).tell() ; } }; 题目(重点) 现在要求实现一个雇员的操作类,里面包含雇员编号、姓名、基本工资、奖金,要求可以输出一个雇员的完整信息, 可以求出一个雇员的年薪、月薪、日平均工资,计算工资的时候要加上奖金 String 类(重点):特殊的引用数据类型; String 在使用中有两种实例化的方法, 第一种是采用直接赋值(将字符串赋 String 的对象) 第二种方法是通过构造方 法完成实例化的操作 字符串的比较(重点) 观察一下代码 两个数字之间直接使用==进行判断即可,但是,==也同样可以应用在 String上。 画图分析下图结果 所以“==”用在数值上表示判断是否相等,如果是用在了对象上,则表示的是判断两个对象的地址是否相等。 如果现在要是想进行内容比较的话,则就只能靠 String 类提供的方法完成了。 两种比较的区别:==和 equals() · ==:用于数值比较,比较的是两个字符串的地址值 · equals():用于内容的比较,比较两个字符串的内容是否相等 两种实例化的区别 之所以内容会相等,是因为在 JAVA 底层中存在了一个字符串的对象池,每次的内容都会从池中取出,如果内容已经 存在了,则使用已经存在的,如果不存在,则会生成一个新的,放入池中,属于共享设计模式。 由于这种原因,只要是使用 String类的话,永远都要采用直接赋值的方式完成。 字符串的内容一旦声明则不可改变(画图解释下面程序)
javaSE面向对象初级01 标签:idt 图片 相等 false col string 观察 特征 out 原文地址:https://www.cnblogs.com/520gqk/p/9626753.html
继承性:继续发扬广大; 提高代码的重复使用
多 态 性:就属于变来变去;public class OODemo04 {
public static void main(String args[]){
Person per1 = null ;
Person per2 = null ;
per1 = new Person() ; // 实例化
per2 = per1 ; // 引用传递
per1.name = "张三" ;
per2.age = 20 ;
per1.tell() ;
} };
package demo;
public class StringDemo04 {
public static void main(String args[]){
String str1 = "hello" ;
String str2 = new String("hello") ;
String str3 = str2 ;
System.out.println("str1 == str2 --> " + (str1==str2)) ; // false
System.out.println("str1 == str3 --> " + (str1==str3)) ; // false
System.out.println("str2 == str3 --> " + (str2==str3)) ; // true
};
}