多态的应用-面向父类编程
1.对象的编译时类型写成父类
2.方法的返回类型写成父类
3.方法的参数类型写成父类

编译时类型:对象的声明时类型,在于编译期间
运行时类型:new运算符后面的类型

编译时类型决定了对象的访问能力
运行时类型决定了对象真正的行为能力
--------------------------------------------------------------------------------
将打印图形面积和周长的业务方法封装到一个业务类当中ShapeBiz.java

//输出圆的周长
public void circleGirth(Circle c){
System.out.println(c.girth());
}

//输出矩形的周长
public void rectGirth(Rect r){
System.out.println(r.girth());
}

.....

采用面向父类编程-方法的参数类型可以写成父类
只需要在业务类当中定义一个方法,就可实现输出任意图形的周长或者面积

public void girth(Shape s){//此处可以传入Shape的任意一个子类对象
System.out.println(s.girth());
}

public void area(Shape s){
System.out.println(s.area());
}

练习:把输出Employee员工的工资的方法封装到输出员工工资的业务类中
--------------------------------------------------------------------------------------
传入一个参数,返回某一个父类的具体的子类的实例

培训师父类 Trainer.java
->会计培训师 AccountTrainer.java
->游泳培训师 SwimmingTrainer.java
->程序员培训师 ProgrammingTrainer.java

定义一个方法:返回某一个类的具体的实例

public static AccountTrainer getInstance(){
return new AccountTrainer();
}

java.util.Calender

定义一个类:TrainerFactory.java

public class TrainerFactory{
//定义一些静态常量属性
public static final int ACCOUT = 0;
public static final int SWINM = 1;
public static final int PROGRAM = 2;

//面向父类编程-方法的返回类型写成父类
public static Trainer getInstance(int type){
Trainner t = null;
switch(type){
case ACCOUNT:
t = new AccountTrainer();
break;

case SWINM:
t = new SwinmmingTrainer();
break;

case PROGRAM:
t = new ProgrammingTrainer();
break;
default:

}
return t;
}
}
以上就是简单工厂设计模式!!!
------------------------------------------------------------------------------
static:静态的

属性:静态属性,它是类拥有的,是所有的对象共享的
语法:
普通变量前面加上一个static

static int id;

注意:static是不能够来修饰局部变量的

public void method(){
int id = 10;

static int id = 20;//error

}
静态属性初始化的时机:
JVM加载类的时候,就会优先对静态属性分配空间并且进行初始化工作
非静态属性,是在每次创建对象的时候才会进行空间分配以及初始化工作!

普通域

int id = 10;

static id = 100;

static应用之:可以生成自增的整数型id

方法:
static修饰的方法叫做静态方法

静态方法的调用:
1.静态方法中可以直接调用静态方法,但是不能够直接调用非静态方法
如果非要调用非静态方法,则需要先创建对象

2.静态方法的调用可以直接通过类名.方法名

为什么main是定义成静态的?
1.因为main是主线程,程序的主入口,由JVM来调用的
根据JVM规范,要将main设置成静态的

一般工具类当中的方法要定义成static,方便调用
java.util.*
java.lang.Math

为什么我们不将所有的资源都定义成静态的呢?
因为静态资源在类加载的时候就会被加载进内存,如果静态资源过多
肯定会占用大量的内存空间,而这部分的资源并不一定都是经常用到的!

静态导入:import static xxx.xxx.xxx;

可以直接使用静态导入的类中的静态常量
而不需要使用类名.常量名

静态内部类[以后再说]

代码块(block)

普通代码块:
{
//每次创建对象的时候都会优先执行
//但是注意一般在程序当中不会出现普通代码块
//它一般都会被移植到构造块中

}

静态代码块:

static{
//是类加载的时候就会立即优先加载

}

类进JVM活动过程:
1.JVM加载需要执行的类
2.给所有的静态成员分配空间
3.对静态成员进行初始化工作
4.调用静态代码块
5.如果创建了对像
5-1 给所有的非静态成员分配空间
5-2 初始化所有的非静态成员
5-3 调用普通代码块
5-4 调用构造方法
-----------------------------------------------------------------------
static应用之单例模式(Simple Pattern)
作用:在应用程序当中,保证某个类的具体实例有且只有1个

三个步骤:
1.私有化构造-不让外界new
2.提供这个类的本身的唯一实例作为该类的静态属性存在着
3.提供一个公开的静态的方法来返回这个类的唯一实例

单例模式:
1.饿汉模式
2.懒汉模式

public class Singleton{
//1.私有化构造
private Singleton(){
System.out.println("构造方法被调用!");
}
//2.提供这个类的本身的唯一实例作为该类的静态属性存在着
private static Singleton instance= new Singleton();

//3.提供一个公开的静态的方法来返回这个类的唯一实例
public staitc Singleton getInstance(){
return instance;
}
}

Test.java

Singleton s1 = Singleton.getInstance();
Singleton s2 = Singleton.getInstance();
s1==s2;//true
-----------------------------------------------------------------------------
Final关键字:
1.final修饰的方法不能够被重写

2.final修饰的类不能够被其他类继承
我们可以用final关键字来阻断继承

3.final修饰的局部变量叫做常量

1.命名由大写字母以及_组成

2.可以先声明一个常量,然后再对该常量进行赋值
但是一旦赋值成功将不能够再改变!

3.在声明的时候同时进行赋值

4.一旦赋值成功,将不能够改变

4.修饰属性:final修饰的属性叫做常量属性
一般会结合static public一起使用

称之为:公开的静态的常量属性

1.声明的时候要同时进行赋值

2.不可先声明,然后再进行赋值,除非使用静态代码块进行赋值

3.命名也是同上

4.一旦赋值成功将不再改变!!!
==================================================================================================

Java笔记7-多态父类静态的更多相关文章

  1. Java特性之多态父类与子类之间的调用

    问题描述: Java三大特性,封装.继承.多态,一直没搞懂其中多态是什么,最近研究了一下,关于父类和子类之间的调用.下面是一个测试类,源代码如下: package com.test; public c ...

  2. Java面向对象之多态的静态和动态实现

    简单而言: 静态多态:即为重载,方法的重载 动态多态:即为重写/覆盖,方法的重写

  3. Java 多态 父类和子类方法的访问控制权限

    Java 多态 父类和子类方法的访问控制权限 @author ixenos 父类和子类方法的访问控制权限 继承是为了扩展类的功能,而这种扩展显然就是对一个原始类的扩展,目的还是向上转型来调用,所以这就 ...

  4. Thinking in Java 笔记

    大二就买了这本书,如今再看这本书,看到了一些以前没看的细节,也有了不同的体会.本文使用第4版,整理每章的笔记心得.老外的书有个特点,他会花费大量的文字去阐述一个概念,这比堆代码强多了. 第 1 章 对 ...

  5. java笔记整理

    Java 笔记整理 包含内容     Unix Java 基础, 数据库(Oracle jdbc Hibernate pl/sql), web, JSP, Struts, Ajax Spring, E ...

  6. Java中的多态

    1.多态:具有表现多种形态的能力的特征 父类: public abstract class Animal {public abstract void Say();} 子类: public class ...

  7. java封装和多态

    封装.集成.多态和抽象是java的基本特征. 封装的第一步就是对类进行组装,即定义一个类,这时候要考虑这个类要有哪些属性.方法等.第二步就是信息的隐藏,这包括访问修饰符.get/set方法和某些特定方 ...

  8. java面向对象之 多态 Polymorphism

    多态(Polymorphism):用我们通俗易懂的话来说就是子类就是父类(猫是动物,学生也是人),因此多态的意思就是:父类型的引用可以指向子类的对象. 1.多态的含义:一种类型,呈现出多种状态 主要讨 ...

  9. Java开发知识之Java的继承多态跟接口*

    Java开发知识之Java的继承多态跟接口 一丶继承 1.继承的写法 在Java中继承的 关键字是 extends 代表一个类继承另一个类. 继承的含义以及作用: 继承就是基于某个父类的扩展.制定出来 ...

随机推荐

  1. 用Runtime.getRuntime().exec()需要注意的地方

    有时候我们可能需要调用系统外部的某个程序,此时就可以用Runtime.getRuntime().exec()来调用,他会生成一个新的进程去运行调用的程序. 此方法返回一个java.lang.Proce ...

  2. POJ 3294 二分找超过一半字符串中存在的子串

    题目大意: 给定n个字符串,求出现在不小于k/2个字符串中的最长子串. 二分找对应子串长度的答案,将所有字符串链接成一个长字符串求后缀数组,记录每一个位置本属于第几个字符串,利用height查询的时候 ...

  3. SVN相关

    Eclipse SVN忽略一些文件夹:Windows -> Preferences -> Team -> Ignored Resources里点 “Add Pattern”,然后把 ...

  4. 大不了高三艹个FZU

    即使做错了也不要紧啊,反正人生就这一次

  5. 关于java 定时器的使用总结

    直接上代码,代码中有注释(代码中还有一些本人的其他测试,读者可以忽略不计).读者在代码中发现了bug,欢迎指正. package j2se.system.test; import java.text. ...

  6. Zend_Frameowrk中进行多语言国际化的相关的配置和使用

    在使用Zend_Framework建立网站,若网站在以后的使用中面向国际,这时就需要实现网站的多语言国际化问题.使用Zend_Framework开发的网站需要进行多语言的开发时,就需要用到了Zend_ ...

  7. <转载>SQL查询数据库各表所占空间

    IF OBJECT_ID('tempdb..#TB_TEMP_SPACE') IS NOT NULL DROP TABLE #TB_TEMP_SPACE GO CREATE TABLE #TB_TEM ...

  8. 最简单的RASPBERRY PI wifi配置

    Setting up Wifi with the Command Line  SIMON MONK   This tutorial works best if your router is broad ...

  9. leetcode日记 Combination sum IV

    题目: Given an integer array with all positive numbers and no duplicates, find the number of possible ...

  10. #HTML:無序、有序與定義清單

    #HTML:無序.有序與定義清單 Maplewing 于 星期六, 12/10/2013 - 09:48 提交 清單在網頁中是很常使用到的東西,故多少還是要了解一下.在HTML中有三種不太一樣的清單, ...