java 基础知识九 类与对象
1、OO(Object–Oriented )面向对象,
OO方法(Object-Oriented Method,面向对象方法,面向对象的方法)是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法
Object Oriented是建立在“对象”概念基础上的方法学
OOP:面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)是一种计算机编程架构。
OOP的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成
OOP 的五个核心:类 对象 继承,多态和封装
类:对现实世界事物的抽象表示,包括事物的状态信息(成员变量)和行为信息(成员方法)
对象:对抽象事物的具体表示,使其具有自身的特点
封装:信息封装,
多态:类实例化成对象之后的不同体现
继承:类与类之间的关联
OOP 的五个核心:类 对象 继承,多态和封装之间的关系,类和对象是两个实体,继承,多态和封装是他们之间的互相转换关系
2、类
类实际上是定义一个模板,而对象是由这个模板产生的一个实例
注意事项:一个java中可以声明多个类 但只能有一个pubulic修饰的类
类定义
修饰符class类名{
修饰符类型实例变量名;
类型实例变量名; ......
修饰符类型方法名(参数类型参数
1,参数类型参数 2...){ //方法体
}
......
}
其中:
修饰符有四种
private:只有本类可见。
protected:本类、子类、同一包的类可见。
默认(无修饰符):本类、同一包的类可见。
public:对任何类可见
变量与方法
成员变量:修饰符 类型 实例变量名,也即是属性,可见区域根据修饰符变化,分静态和非静态
局部变量:方法中定义的变量,有效范围在方法体内
创建对象的入口:类的构造方法
构造方法与类同名,没有返回值,可以有多个参数,但必须有一个是无参数
类的入口:类的主方法 main,程序流程入口,静态无返回值,参数为数组
public static void main(String[] args) {}
成员方法:修饰符 类型 方法名(参数类型 参数 1,参数类型 参数 2...){
//方法体} 分静态和非静态
区别和对比详见下图
3、对象
对抽象事物的具体表示,即类的实例,现实展现。
对象的创建
类 对象引用=new 类();
先创建一个对象引用,再创建一个对象,并将对象初始化,最后通过= 将对象引用指向对象
类:就是上面具体事物的抽象形式
对象引用:可理解为对象别名,通过对象引用找到对象,可以指向一个或者0个对象,其实是寻址信息,类似C的指针,C++的地址
new 类():创建一个对象并采用构造函数初始化,在堆内存中分配空间,new是创建对象的标识符,对象可以被多个对象引用指引。
();通过类的构造函数初始化对象,可以有参数
对象的比较 ==和equal
== 比较对象的引用 equal 比较对象的内容
对象的销毁
将对象引用赋值为null,对象在堆空间中会被jvm通过垃圾回收机制回收
4、堆和栈
堆栈:Java把内存分成两种,一种叫做栈内存,一种叫做堆内存
栈内存
存储一些基本类型的变量和对象的引用变量
当超过变量的作用域后,Java会自动释放掉为该变量所分配的内存空间。
引用变量就相当于是为数组或对象起的一个名称,通过栈中的引用变量来访问堆中的数组或对象
堆内存
存用来存放由new创建的对象和数组。
在堆中分配的内存,由Java虚拟机的自动垃圾回收器来管理。
附:例子
public class User { // 静态变量
public static String nationality = "china";
// 非静态变量
public String name;
private int age; public User(){}
// 带参数构造函数
public User(String name){
// this 的使用
this.name=name;
} // 静态方法
public static String getNationality() {
return nationality;
}
public static void setNationality(String nationality) {
User.nationality = nationality;
}
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 class UserTest { /**
* @param args
*/
public static void main(String[] args) {
System.out.println(User.nationality);// 静态变量调用
System.out.println(User.getNationality());// 静态方法调用
User user=new User("张三");// 创建对象 创建对象引用 并赋值
System.out.println(user.nationality);// 静态变量调用 不建议
System.out.println(user.name);// 非静态变量调用
System.out.println(user.getName());// 非静态变量调用 // getAge();// 非法 main方法为静态 必须调用静态方法
getStaticAge();// 合法 必须调用静态方法 User user1=new User("lisi");
User user2=new User("lisi");
User user3=user1;
if(user1==user3){// 用来比较引用指向是否相等
System.out.println("对象引用相等");
}
if(user1.equals(user2)){// 用来比较引用指向的内容是否相等
System.out.println("对象内容相等");
} } // // 普通方法
// public void getAge(){
// System.out.println("三岁");//
// } // 静态方法
public static void getStaticAge(){
int age=3;// 局部变量 使用范围是方法内
System.out.println(age+"岁");//
}
}
java 基础知识九 类与对象的更多相关文章
- Java基础 之二 类和对象
1.基础概念 1) 概念 简单来说,类是具有相同特征事物的抽象,比如有轮子的都可以抽象为车:对象则可以看做类的具体实例,比如创建一个法拉利的车,就是车这个类的实例. 抽象.封装.继承.多态是类的四个特 ...
- Java基础_0302:类和对象
定义类 class Book { // 定义一个新的类 String title; // 书的名字 double price; // 书的价格 /** * 输出对象完整信息 */ public voi ...
- java基础:详解类和对象,类和对象的应用,封装思想,构造方法详解,附练习案列
1. 类和对象 面向对象和面向过程的思想对比 : 面向过程 :是一种以过程为中心的编程思想,实现功能的每一步,都是自己实现的 面向对象 :是一种以对象为中心的编程思想,通过指挥对象实现具体的功能 1. ...
- C/C++基础知识总结——类与对象
1. 面向对象程序设计的特点 1.1 抽象 1.2 封装 1.3 继承 1.4 多态 (1) 分为:强制多态.重载多态.类型参数化多态.包含多态 (2) 强制多态:类型转换 重载多态: 类型参数化多态 ...
- 多态、抽象类、接口、区别(java基础知识九)
1.多态的概述以及代码体现 * A:多态概述 * 事物存在的多种形态 * B:多态前提 * a:要有继承关系. * 一个类是父类,一个类是子类 * b:要有方法重写. * c:要有父类引用指向子类对象 ...
- 第二十九节:Java基础知识-类,多态,Object,数组和字符串
前言 Java基础知识-类,多态,Object,数组和字符串,回顾,继承,类的多态性,多态,向上转型和向下转型,Object,数组,多维数组,字符串,字符串比较. 回顾 类的定义格式: [类的修饰符] ...
- java基础知识回顾之---java String final类普通方法
辞职了,最近一段时间在找工作,把在大二的时候学习java基础知识回顾下,拿出来跟大家分享,如果有问题,欢迎大家的指正. /* * 按照面向对象的思想对字符串进行功能分类. * ...
- Java基础知识(壹)
写在前面的话 这篇博客,是很早之前自己的学习Java基础知识的,所记录的内容,仅仅是当时学习的一个总结随笔.现在分享出来,希望能帮助大家,如有不足的,希望大家支出. 后续会继续分享基础知识手记.希望能 ...
- java基础知识小总结【转】
java基础知识小总结 在一个独立的原始程序里,只能有一个 public 类,却可以有许多 non-public 类.此外,若是在一个 Java 程序中没有一个类是 public,那么该 Java 程 ...
随机推荐
- 关于ReentrantLock和Condition的用法
这篇博客是过年后的第一篇博客,2.13正式上班,之前在家休年假.上班第一天公司说有个紧急的项目需要上线,所以我们连续加了两个星期的班,直到上个周六还在加班,终于成功上线了.今天是2月的最后的一天,继续 ...
- rem与em
最近有朋友在进行rem布局的时候总搞不懂rem em px 与百分比布局的区别在哪里 这里简单给大家介绍一下 Em为单位: 这种技术需要一个参考点,一般都是以<body>的&quo ...
- Hibernate框架单向多对多关联映射关系
建立单向多对多关联关系 Project.java (项目表) private Integer proid; private Strin ...
- 如何快速的学习selenium工具
分享即快乐. 最近几年,软件测试工程师一度成为热门职业,作为测试员也是倍感压力.作为测试员来说,仅仅会手工测试让职业生涯陷入瓶颈.于是工作之余充电,学习了自动化测试工具selenium,打算进阶中高级 ...
- Linux实战教学笔记21:Rsync数据同步工具
第二十一节 Rsync数据同步工具 标签(空格分隔): Linux实战教学笔记-陈思齐 ---本教学笔记是本人学习和工作生涯中的摘记整理而成,此为初稿(尚有诸多不完善之处),为原创作品,允许转载,转载 ...
- TableView 多余分割线的处理
方法一,以下两个方法的实现 - (void)viewDidLoad { [super viewDidLoad]; self.tableView.tableFooterView = [[UIView a ...
- Java调度框架Quartz简单示例
Quartz的大名如雷贯耳,这里就不赘述,而且本文也不作为深入探讨,只是看完Quartz的官方文档后,下个简单示例,至少证明曾经花了点时间学习过,以备不时之需. Quartz使用了SLF4J,所以至少 ...
- 购买的wemall 6.0商城系统源码分享
使用方法 1.解压目录 2.cd wemall6 && npm i 3.配置config下的config.json 4.npm start 摒弃以往的开发框架thinkphp,使用no ...
- Jmeter正则提取list中相同key的value和出现的次数
list中如何计算某个key出现的次数以及通过正则关联参数化呢? 首先要通过正则提取出现key的value 举例:
- Https握手协议以及证书认证
1. 什么是https Https = http + 加密 + 认证 https是对http的安全强化,在http的基础上引入了加密和认证过程.通过加密和认证构建一条安全的传输通道.所以https可以 ...