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==>类集 这是两个最重要部分,这两个部分理解 ...
随机推荐
- json格式初涉
json用{}表示json对象,[]表示数组,里面以值对的方式来存储信息 var jsondata='{"staff": [{"name":"jim& ...
- 百度SEO优化
下面是一些SEO优化的基本步骤: 一.内部优化 (1)TITLE,KEYWORDS,DESCRIPTION等的优化 (2)内部链接的优化,包括相关性链接,锚文本链接,各导航等链接页 (3)每天保持站内 ...
- 转:Yii 常量的轻松管理
问题 我经常在不同的地方使用模型中的常量(基本状态常量),当常量改变时我不得不在使用每处它的代码中修改. 获取常量 为了解决这个问题我使用了一个方法 getConstants(). public st ...
- BZOJ1651: [Usaco2006 Feb]Stall Reservations 专用牛棚
1651: [Usaco2006 Feb]Stall Reservations 专用牛棚 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 509 Sol ...
- c# 实现文件拖入和拖出(拖拽)
摘自:http://www.cnblogs.com/eaglet/archive/2009/01/06/1370149.html C# WinForm下一步一步实现文件的拖入和拖出 作者:Eaglet ...
- Codeforces Round #203 - D. Looking for Owls
D. Looking for Owls Emperor Palpatine loves owls very much. The emperor has some blueprints with the ...
- ubuntu的web开发环境搭建
为了保持mac的干净整洁,决定用PD搭建一条web开发环境,记下整个过程. ubuntu 首先是操作系统,本着习惯就好的原则,选用了Ubuntu server 12.04.4版.系统的安装很简单,ht ...
- css和js引用图片的路径问题
原文转自:http://www.cnblogs.com/azumia/archive/2012/06/17/2552346.html 在JS文件中书写相对路径:JS文件是指在页面中引用的外部JavaS ...
- 数据库版本管理工具Flyway(4.0.3)---工作机制(译文)
How Flyway works The easiest scenario is when you point Flyway to an empty database. 最容易的方案是Flyway指向 ...
- Windows下oracle打补丁步骤
1.Oracle官网下载对应的补丁文件(需要oracle支持账号才能下载) 2.设置ORACLE_HOME set oracle_home=F:\oracle\product\11.2.0\dbhom ...