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 程 ...
随机推荐
- 作为前端工程师,必须要学会的基本工具之一(AI)
由于之前工作中一直使用的都是photoshop,所以对AI软件的使用并不是很熟,导致使用过程中,遇到了困难----字体无法选中.作为前端工程师都知道,一张设计图中有很多文字,如果纯手打那简直是要累死人 ...
- angularjs+ionic注册页面表单验证(手机号、确认密码、60s后重发验证码)
在已建立tabs和路由的注册页面html: 功能: 进行了手机号.密码格式验证,两次密码输入是否相同的判断,都正确且复选框勾选后才可点击注册,进入tabs.mypage页面. 未进行验证码真正发送.获 ...
- Laravel Migrate
artisan命令行创建migrate 格式: php artisan make:migration YourFileName 示例: php artisan make:migration creat ...
- 使用Task的一些知识优化了一下同事的多线程协作取消的一串代码
最近在看一个同事的代码,代码的本意是在main方法中开启10个线程,用这10个线程来处理一批业务逻辑,在某一时刻当你命令console退出的时候,这个 时候不是立即让console退出,而是需要等待1 ...
- 在.NET项目中使用PostSharp,实现AOP面向切面编程处理
PostSharp是一种Aspect Oriented Programming 面向切面(或面向方面)的组件框架,适用在.NET开发中,本篇主要介绍Postsharp在.NET开发中的相关知识,以及一 ...
- Oracle-orclEXORIM
imp pzhdb/hiway@orcl file =d:\pzhsd.dmp fromuser = pzhsd touser=pzhdb:导入 第一个pzhdb为新的用户名 hiway为密码 orc ...
- Jmeter接口压力测试
SOAP百科:Soap简单对象访问协议,是交换数据的一种协议规范,是一种轻量的.简单的.基于XML(标准通用标记语言下的一个子集)的协议,它被设计成在WEB上交换结构化的和固化的信息.webServi ...
- idea调试SpringMvc, 出现:”通配符的匹配很全面, 但无法找到元素 'mvc:annotation-driven' 的声明“错误的解决方法
调试json格式输出,出现以下错误: HTTP Status 500 - Servlet.init() for servlet HelloDispatcher threw exception ty ...
- ORACLE 12C 基础
连接到PDB数据库 CMD窗口:sqlplus 用户名/密码@localhost:1521/PDB数据库名 示例:sqlplus xiaozijie/Abc4681101@localhost:1 ...
- C各个类型的大小
1个字节(byte)是8bit. 我采用的是64位系统,64位指CPU寄存器的数据宽度是64位的. short 和 int:short比int更节省空间,short占内存是Int的一半,当要考虑程序的 ...