Java Se 基础系列(笔记) -- OO
记录所学到的关于Java Se的一些基础知识
1.对象是通过“属性(成员变量)”和“方法”来分别对应事物所具有的静态属性和动态属性
2.类(Class)是对某一类事物的抽象,对象(Object)为某个类的具体实例(Instance)
3.面向对象的思维:考虑问题里头有哪些类哪些对象,考虑它们应该具有哪些属性和方法,再考虑类和类之间具备了什么关系
4.成员变量和局部变量的区别:
-1 位于类体中方法体外的为成员变量,方法体内的为局部变量
-2 在定义成员变量时可对其进行初始化,如果不初始化,java会使用默认的值(0/null)对其初始化;局部变量不会被默认初始化所以必须自己去初始化
5.引用类型占两块内存(new出来的东西在heap中,局部变量位于stack,静态变量和字符串常量在dataseg区)
Person p = new Person("圣诞");
class Person {
String name = null;
public Person(String name) {
this.name = name;
}
}

6.同一类中的每个对象有不同的成员变量存储空间,同一类的每个对象共享该类的方法
7.类名首字母大写,变量名和方法名首字母小写
8.this是指向自身的引用

9.在类中,用static声明的成员变量为静态成员变量,为该类的公用变量,对该类的所有对象来说static成员变量只有一份;用static声明的方法为静态方法,不再针对于某个对象调用而且在静态方法中不能访问非静态变量。(静态变量和静态方法可以不用创建对象就调用(也可通过类名进行调用),非静态变量和方法必须创建对象后才能被调用)
10.java 权限修饰符(对class(除了内部类)的权限只能用public和default。-1.public类可以在任意地方被访问 -2.default类只可以被同一个包内部的类访问)
| 类内部 | 同一个包 | 子类 | 任何地方 | |
| private | √ | |||
| default(没写修饰符) | √ | √ | ||
| protected | √ | √ | √ | |
| public | √ | √ | √ | √ |
11.继承
-1 子类构造过程中必须调用父类(基类)的构造方法
-2 子类在自己的构造方法中使用super(argument_list)来调用父类的构造方法,并且必须写在子类构造方法的第一行;使用this(argument_list)来调用本类的另外的构造 方法
-3 如果子类构造方法中没有显示调用基类的构造方法系统会默认调用基类的无参数构造方法;若既无显式调用而基类中又无无参数的构造方法则编译出错
public class Test2 {
public static void main(String[] args) {
Person p1 = new Person("A");
Person p2 = new Person("B", "shanghai");
Student s1 = new Student("C", "S1");
Student s2 = new Student("C", "shanghai", "S2");
System.out.println(p1.info());
System.out.println(p2.info());
System.out.println(s1.info());
System.out.println(s2.info());
}
}
class Person {
private String name;
private String location;
Person(String name) {
this.name = name;
location = "beijing";
}
//构造方法的重载
Person(String name, String location) {
this.name = name;
this.location = location;
}
public String info() {
return "name: " + name + " location: " + location;
}
}
class Student extends Person {
private String school;
Student(String name, String school) {
//this(argument_list)调用本类的另外的构造方法
this(name, "beijing", school);
}
Student(String n, String l, String school) {
//super(argument_list)调用父类的构造方法
super(n, l);
this.school = school;
}
public String info() {
return super.info() + " school:" + school;
}
}
12.对象转型
-1 一个父类的引用类型变量可以"指向"其子类的对象
-2 一个父类的引用不可以访问其子类对象新增加的属性和方法
-3 可用: 对象名 instanceof 类名 来判断该对象是否属于该类或该类的子类
public class TestCasting {
public static void main(String[] args) {
Animal a = new Animal("a");
Cat c = new Cat("c", "blue");
Dog d = new Dog("d", "yellow");
//使用 变量instanceof类 来判断该变量是否属于该类或该类的子类
System.out.println(a instanceof Animal);
System.out.println(c instanceof Animal);
System.out.println(d instanceof Animal);
System.out.println(a instanceof Cat);
//一个父类的引用可以指向其子类的对象
a = new Dog("a_d", "brown");
System.out.println(a instanceof Animal);
System.out.println(a instanceof Dog); //instanceof看的是它实际上是什么东西
//System.out.println(a.furColor); //error,一个父类的引用不能访问其子类对象新增加的属性和方法
System.out.println(a.name);
//将a从Animal类强转为Dog类
Dog d1 = (Dog)a;
System.out.println(d1.furColor);
}
}
class Animal {
public String name;
public Animal(String name) {
this.name = name;
}
}
class Cat extends Animal {
public String eyeColor;
public Cat(String name, String eyeColor) {
super(name);
this.eyeColor = eyeColor;
}
}
class Dog extends Animal {
public String furColor;
public Dog(String name, String furColor) {
super(name);
this.furColor = furColor;
}
}
13.多态(也叫动态绑定,在执行期间判断所引用对象的实际类型然后根据实际的类型调用其相应的方法)
多态存在的3个必要条件:1.继承 2.方法重写 3.父类引用指向子类对象
14.抽象类:
- 含有抽象方法的类必须声明为抽象类
- 抽象类必须被继承,抽象方法必须被重写,抽象类不能被实例化,抽象方法只需声明不需实现
15.final
1.final的变量的值不能被改变 2.final方法不能被重写 3.final类不能被继承
16.接口(从本质上讲,接口是一个特殊的抽象类,该类中只包含常量和方法的定义,没有变量也没有方法的实现)
- 接口的特性
-1 接口中声明的属性默认为public static final(能且只能是public static final),可省略不写
-2 接口中只能定义抽象方法,这些方法同样能且只能是public
-3 接口可以继承其他接口并添加新的属性和抽象方法
-4 接口可以继承接口,类可以继承类,类实现接口
- 与继承关系相似,接口与实现类之间存在多态性
public class Test3 {
public static void main(String[] args) {
//接口的实现相当于继承;接口的实现必须有方法的重写;父类引用指向子类对象所以构成多态
Person c = new Chinese();
Person a = new American();
//因此调用的是各自的speak方法
c.speak();
a.speak();
}
}
interface Person {
//默认为 public
public void speak();
}
class Chinese implements Person {
//实现了接口就必须重写接口中的所有方法
public void speak() {
System.out.println("中国人说中国话");
}
}
class American implements Person {
public void speak() {
System.out.println("美国人说英文");
}
}
Java Se 基础系列(笔记) -- OO的更多相关文章
- Java Se 基础系列(笔记) -- Exception && Array
Exception 1.java 异常是java提供的用于处理程序中错误(指在程序运行的过程中发生的一些异常事件)的一种机制 2.java程序的执行过程中如果发生异常事件则自动生产一个异常类对象,该对 ...
- Java Se 基础系列(笔记) -- BasicDataType
java.lang.String类代表不可变的字符序列 String类常用方法:1.public char charAt(int index); -- 返回下标为index的字符 2.public i ...
- Java SE 基础:注释
Java SE 基础:注释 一.注释定义 用于解释说明程序的文字. 二.注释的作用 1.解释说明程序,提高程序的可读性 2.可以帮助我们调试程序:通过注释代码块,检测错误位置 三.格式 1.单行注释 ...
- Java SE 基础:标识(zhì)符
Java SE 基础:标识(zhì)符 一.标识符定义 标识符,就是给类.接口.方法.变量等起名字时的字符序列 二.组成规则与注意事项 1.组成规则 英文大小写字母 数组 $ 和 _ 2.注意事项 不 ...
- Java SE 基础:常用关键字
Java SE 基础:常用关键字 常用关键字表
- Java SE基础知识
Java SE面试题 目录 Java SE基础 基本语法 数据类型 关键字 面向对象 集合 集合类概述 Collection接口 List Set Map Java SE基础 基本语法 数据类型 Ja ...
- 《写给大忙人看的java se 8》笔记
现在才来了解java8,是不是后知后觉了点? 新的编程技术,个人不喜欢第一时间跟进. 待社区已有实践积淀再切入似乎更划算些? 一点点精明的考虑. 不多说,上代码. //读<写给大忙人看的java ...
- Java SE 基础知识(一)
一.基础知识 1. Java SE : Java Standard Edition Java ME : Java Micro Edition Java EE : Java Enterprise Edi ...
- [零基础学JAVA]Java SE基础部分-01. Java发展及JDK配置
转自:http://redking.blog.51cto.com/27212/114976 重点要会以下两个方面: 1. 抽象类与接口 2. API==>类集 这是两个最重要部分,这两个部分理解 ...
随机推荐
- linux下定时任务
一.linux定时任务软件种类 .at : 适合执行一次的任务.突发性的任务.需要启动 atd 服务才能执行任务. .crontab: 周期性的执行任务工作:启动crond 服务后可以执行任务.最常用 ...
- iOS——文件操作NSFileManager (创建、删除,复制,粘贴)
iOS——文件操作NSFileManager (创建.删除,复制,粘贴) iOS的沙盒机制,应用只能访问自己应用目录下的文件.iOS不像android,没有SD卡概念,不能直接访问图像.视 ...
- D3js初探及数据可视化案例设计实战
摘要:本文以本人目前所做项目为基础,从设计的角度探讨数据可视化的设计的方法.过程和结果,起抛砖引玉之效.在技术方案上,我们采用通用web架构和d3js作为主要技术手段:考虑到项目需求,这里所做的可视化 ...
- Qt中 QString 和int, char等的“相互”转换,关键是QString.toLocal8Bit().data();
Qt中 int ,float ,double转换为QString 有两种方法 1.使用 QString::number(); 如: long a = 63; QString s = QString:: ...
- 关于Android读取不同位置(drawable,asset,SDCard)的图片资源的总结
方式一: 已将图片保存到drawable目录下,通过图片id获得Drawable或者Bitmap,此方式最常用.(若只知道图片的名称,还可以通过图片的名称获得图片的id) (1)通过图片id获得Dra ...
- error: No resource identifier found for attribute ‘backIcon’ in package
异常提示: 今天我新创建了一个自定义控件,我为他定义了一个属性为backIcon,但是当我在xml设置这个属性之后,xml布局界面提示以下错误: 错误原因: 在网上查找错误原因的时候,有文章说这是因为 ...
- SDL音频播放
gcc -o tutorial03 tutorial03.c -lavutil -lavformat -lavcodec -lz -lm \`sdl-config --cflags --libs` A ...
- 各种计算机语言的经典书籍(C/C++/Java/C#/VC/VB等)
1.Java Java编程语言(第三版)-Java四大名著--James Gosling(Java之父) Java编程思想(第2版)--Java四大名著--Bruce Eckel Java编程思想(第 ...
- POJ_1321——棋盘问题,回溯+剪枝
Description 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别.要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子 ...
- Java学习笔记(1)——基本数据类型
一.进制转换 10^n被称为权 10称为基数 计算机中正数和负数的关系是取反加一, 如: ~3+1=-3 补码边界运算有溢出风险 32位二进制补码最多表示2^32个数, -2G~2G 1,计算机 ...