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 程 ...
随机推荐
- 学习JVM--垃圾回收(二)GC收集器
1. 前言 在上一篇文章中,介绍了JVM中垃圾回收的原理和算法.介绍了通过引用计数和对象可达性分析的算法来筛选出已经没有使用的对象,然后介绍了垃圾收集器中使用的三种收集算法:标记-清除.标记-整理.标 ...
- 【排序算法】希尔排序算法 Java实现
希尔排序算法是按其设计者希尔(Donald Shell)的名字命名,该算法由1959年公布,是插入排序的一种更高效的改进版本. 希尔排序是基于插入排序的以下两点性质而提出改进方法的: 插入排序在对几乎 ...
- Java重写equals()和hashCode()
1.何时需要重写equals() 当一个类有自己特有的 ”逻辑相等”概念(不同于对象身份的概念). 2.设计equals() [1]使用instanceof操作符检查 ”实参是否为正确的类型”. [2 ...
- 基于keepalived搭建MySQL高可用集群
MySQL的高可用方案一般有如下几种: keepalived+双主,MHA,MMM,Heartbeat+DRBD,PXC,Galera Cluster 比较常用的是keepalived+双主,MHA和 ...
- mysql中的一些操作语句,留存
CREATE TABLE `poision` ( `username` varchar(20) NOT NULL , `nowtime` varchar(50) NOT NULL , `poision ...
- 轻松理解JavaScript闭包
摘要 闭包机制是JavaScript的重点和难点,本文希望能帮助大家轻松的学习闭包 一.什么是闭包? 闭包就是可以访问另一个函数作用域中变量的函数. 下面列举出常见的闭包实现方式,以例子讲解闭包概念 ...
- JavaScript的基本规范
1.不要在同一行声明多个变量: 2.请使用===/!==来比较true/false或者数值: 3.使用对象字面量替代new Array这种形式: 4.Switch语句必须带有default分支: 5. ...
- sublime 快速安装多个插件的两种方法[Advanced Install Package]与[Package Control.sublime-settings]
环境 sublime 3,目前官网下载的sublime3 已经支持自动安装 Package Control . 第一种: ctrl+shift+p 调出命令面板以后 以前都是使用 Package Co ...
- 关于Tarjan(2)
Tarjan有第二个神奇的用法,求强连通分量!!!!!!!!!!!!!!!!!!! 同样利用了dfn:dfs序,low:能回到的最早祖先的dfn: 废话少说 上板子 #include<iostr ...
- windows phone 8.1开发:(消息弹出框)强大的ContentDialog
原文出自:http://www.bcmeng.com/contentdialog/ 在应用开发中我们必不可少的会使用到消息框,windows phone8中的messagebox在windows ph ...