记录所学到的关于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的更多相关文章

  1. Java Se 基础系列(笔记) -- Exception && Array

    Exception 1.java 异常是java提供的用于处理程序中错误(指在程序运行的过程中发生的一些异常事件)的一种机制 2.java程序的执行过程中如果发生异常事件则自动生产一个异常类对象,该对 ...

  2. Java Se 基础系列(笔记) -- BasicDataType

    java.lang.String类代表不可变的字符序列 String类常用方法:1.public char charAt(int index); -- 返回下标为index的字符 2.public i ...

  3. Java SE 基础:注释

    Java SE 基础:注释 一.注释定义 用于解释说明程序的文字. 二.注释的作用 1.解释说明程序,提高程序的可读性 2.可以帮助我们调试程序:通过注释代码块,检测错误位置 三.格式 1.单行注释 ...

  4. Java SE 基础:标识(zhì)符

    Java SE 基础:标识(zhì)符 一.标识符定义 标识符,就是给类.接口.方法.变量等起名字时的字符序列 二.组成规则与注意事项 1.组成规则 英文大小写字母 数组 $ 和 _ 2.注意事项 不 ...

  5. Java SE 基础:常用关键字

    Java SE 基础:常用关键字 常用关键字表

  6. Java SE基础知识

    Java SE面试题 目录 Java SE基础 基本语法 数据类型 关键字 面向对象 集合 集合类概述 Collection接口 List Set Map Java SE基础 基本语法 数据类型 Ja ...

  7. 《写给大忙人看的java se 8》笔记

    现在才来了解java8,是不是后知后觉了点? 新的编程技术,个人不喜欢第一时间跟进. 待社区已有实践积淀再切入似乎更划算些? 一点点精明的考虑. 不多说,上代码. //读<写给大忙人看的java ...

  8. Java SE 基础知识(一)

    一.基础知识 1. Java SE : Java Standard Edition Java ME : Java Micro Edition Java EE : Java Enterprise Edi ...

  9. [零基础学JAVA]Java SE基础部分-01. Java发展及JDK配置

    转自:http://redking.blog.51cto.com/27212/114976 重点要会以下两个方面: 1. 抽象类与接口 2. API==>类集 这是两个最重要部分,这两个部分理解 ...

随机推荐

  1. em px 简单换算

    大部分的网页设计者在CSS代码编写中总是先对整体定义字体尺寸,中文情况下一般为12px,而其实这样以来在通过IE顶部菜单中的“察看-文字大小”设置已无任何 作用.对字体感觉太小的浏览者而言无疑是种很不 ...

  2. 开发H5小游戏

    Egret白鹭H5小游戏开发入门(一)   前言: 好久没更新博客了,以前很多都不会,所以常常写博客总结,倒是现在有点点经验了就懒了.在过去的几个月里,在canvas游戏框架方面,撸过了CreateJ ...

  3. Solr Dataimport配置

    参考资料: https://cwiki.apache.org/confluence/display/solr/Uploading+Structured+Data+Store+Data+with+the ...

  4. JSP与Servlet之间传值

    Jsp与Servlet之间的传值有两种,一种是Jsp传值给Sevlet,另一种是Servlet传值给Jsp:使用request.response对象完成传值,具体实现如下: 1.JSP传值给Servl ...

  5. 解决安装 Visual Studio 2012 后无法连接VPN的问题

    1. 单击“开始”,单击“运行”,键入“regedit”,然后单击“确定” 2. 找到下面的注册表子项,然后单击它: HKEY_LOCAL_MACHINE\System\CurrentControlS ...

  6. IE 将“通过域访问数据源”设置为启用(注册表)

    XP HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\1\1406 Vista+ HKCU\Softwar ...

  7. 【转】ActionBar的基本用法

    原文网址:http://irtutsk.iteye.com/blog/2117707 ActionBar的组成: [1]AppIcon:标题区,显示应用程序图标和标题,也可以自定义. [2]ViewC ...

  8. 警告: 隐式声明与内建函数‘exit’不兼容 [默认启用]

    警告: 隐式声明与内建函数‘exit’不兼容 [默认启用] 最近在学习linux下的多任务编程,用到exit等函数时,经常出现该警告,查找资料后发现,原因其实很简单,没有把stdlib.h头文件包含进 ...

  9. springMVC学习(1)

    spring mvc的位置: springMVC只是spring的一个模块:   第一步:发起请求到前端控制器(DispatcherServlet) 第二步:DispatcherServlet请求Ha ...

  10. yii 使用 phpmailer发送邮件

    原文链接 :  http://www.yiiframework.com/extension/mailer/ 下载插件放在 :XXX/protected/extensions/ 作为一个普通的组建使用 ...