1:Java的常用包;
核心类在java 包中;扩展类在javax包中
java.lang 系统默认自动导入 包含String Math System Thread等类
java.util 包含了工具类接口和集合框架类 如Arrays List Set
java.net java.io java .text java.sql
java.awt 抽象窗口工具集 Abstract Window Toolkits
java.swing 包含Swing图形用户界面编程的相关类和接口用于构建和平台无关的GUI程序;
2:构造器
构造器是一个特殊的方法用于创建类的实例;构造器的最大用处就是创建对象的时候进行初始化基本类型的初始化属性为0 boolean为false 引用类型属性设置为null;
另外,构造器也可以重载;
public class Fruit
{
public String name;
public String color;
public double weight;
//constructor A
public Apple()
{
}
//constructor B
public Apple(String name , String color)
{
this.name = name;
this.color = color;
}
//constructor C
public Apple(String name , String color , double weight)
{
//通过this调用另一个重载的构造器的初始化代码
this(name , color);
//下面this引用该构造器正在初始化的Java对象
this.weight = weight;
}
}
3:类的继承
一个关于sb的例子

 public class sb {

 /**
* @param args
*/ public String name;
public int age;
public void say(String content)
{
System.out.println(content); } } public class Sb_of_man extends sb {
public String quxiang;
public Sb_of_man(String quxiang)
{
this.quxiang=quxiang;
}
public static void main(String[] args)
{
Sb_of_man one =new Sb_of_man("W");
one.say("I like "+one.quxiang);
} }

output:

I like W
子类会继承父类的所有属性和方法;Java中每个类最多只有一个直接父类,注意是直接父类;
4:子类重写父类的方法;因为父类的某些方法可能不适用一些具体而特殊的子类这时候就要对其重写;比如鸵鸟不会飞但是它继承的鸟这个父类中默认鸟都是会飞的;
重写父类要遵循的原则:
方法名相同,参数表相同
返回值类型比父类返回值类型更小或者相等
子类方法的访问权限比父类方法更大或者相等
重写的方法如果是类方法那就一定是类方法不要乱用实例方法覆盖类方法这样是错误的。
如下示例不符合原则
class BaseClass
{
public static void test(){....}
___________
}
class SubClass
{
public void test(){.....}
___________
}
另外 如果父类中方法被覆盖之后子类则无法访问,如果访问需要使用super关键字
如果父类中方法被关键字private修饰则该方法对子类隐藏,子类无法使用,无法重写,无法访问,这样的话就无所谓重写喽;
5:super super和this一样,都不能出现在static的方法中,Cannot use super in a static context
super是直接父类对象的默认引用,注意哦 是父类对象不是父类,很有区别;
Java程序创建一个类的对象的时,系统会隐式的创建一个该父类的对象,只要有一个子类对象存在则一定存在一个与之对应的父类对象
6:调用父类构造器
构造器不能继承;如果父类中自定义了构造器,那么子类中如果使用必须显式调用父类构造器,否则编译出错,如果没有自定义构造器那么默认即可;(这点要注意!)
可参考 http://www.knowsky.com/369673.html 所言:假如自定义了构造器,那么默认构造器将不存在! 似乎这样解释来算是对的吧
http://www.blogjava.net/weidagang2046/articles/3430.html

当调用子类构造器来初始化子类对象时,父类构造器总是会在子类构造器之前执行;以此创建人和java对象总是最先执行java.lang.Object类的构造器;
示例如下:
class Creature
{
public Creature()
{
System.out.println("Creature无参数的构造器");
}
}
class Animal extends Creature
{
public Animal(String name)
{
System.out.println("Animal带一个参数的构造器,该动物的name为" + name);
}
public Animal(String name , int age)
{
//使用this调用同一个重载的构造器
this(name);
System.out.println("Animal带2个参数的构造器,其age为" + age);
}

}
public class Wolf extends Animal
{
public Wolf()
{
//显式调用父类有2个参数的构造器
super("土狼", 3);
System.out.println("Wolf无参数的构造器");
}
public static void main(String[] args)
{
new Wolf();
}
}

output:
Creature无参数的构造器
Animal带一个参数的构造器,该动物的name为土狼
Animal带2个参数的构造器,其age为3
Wolf无参数的构造器

7:多态 Polymorphism
java引用变量有两个类型一个是编译时类型一个是运行是类型;编译时类型由声明时候的类型决定,运行时候类型有实际赋值给该变量的对象决定;如果编译时类型和运行时不同则出现多态;
另外系统总是试图访问它编译时类所定义的属性而不是运行时类所定义的属性。
8:引用类型的强制类型转换;
最好用instanceof来进行判断是否能进行强制类型转换,
把子类对象赋给父类引用变量被称为向上转化;总可以成功;
反过来需要强制类型转换,最好用instanceof运算符进行判断;Instance (例子、实例)
示例:
Object hello="hello";
if(hello instanceof String)
String str=(String) hello;

Java 学习 第三篇;面向对象的更多相关文章

  1. 从.Net到Java学习第三篇——spring boot+mybatis+mysql

    从.Net到Java学习第一篇——开篇 环境:mysql5.7 新建mysql数据库demo,然后执行如下sql脚本进行数据表创建和数据初始化: -- ------------------------ ...

  2. Java学习第三篇:类的三大特征,抽象类,接口,final关键字

    一.类的三大特征 1.封装性 (1).什么是封装 封装就是把抽象出的数据和对数据的操作封装在一起, 数据被保护在内部, 程序的其他部分只有通过被授权的操作(成员方法), 才能对数据进行操作. (2). ...

  3. java 学习第三篇if判断

    JAVA 判断 单词: if 如果 else 否则 单分支: If(条件) { 代码块 } If是一个判断语句.代码格式如上. If括号的内是表达式.如果表达式值是成立的便执行代码块.之后在执行IF语 ...

  4. JAVA学习第三篇Boolean

    Boolean是布尔值. 布尔值只有两个值:真和假.写作:true false. 那么如何使用呢? 最简单的用法: public class demo{ public static void main ...

  5. 从.Net到Java学习第十一篇——SpringBoot登录实现

    从.Net到Java学习系列目录 通过前面10篇文章的学习,相信我们对SpringBoot已经有了一些了解,那么如何来验证我们的学习成果呢?当然是通过做项目来证明啦!所以从这一篇开始我将会对之前自己做 ...

  6. Java学习之反射篇

    Java学习之反射篇 0x00 前言 今天简单来记录一下,反射与注解的一些东西,反射这个机制对于后面的java反序列化漏洞研究和代码审计也是比较重要. 0x01 反射机制概述 Java反射是Java非 ...

  7. 201671010140. 2016-2017-2 《Java程序设计》java学习第三周

    java学习第三周       不知不觉,学习java已经是第三周了,不同于初见时的无措,慌张,在接触一段时日后,渐渐熟悉了一些,了解到了它的便利之处,也体会到了它的一些难点,本周主攻第四章,< ...

  8. Python学习-第三天-面向对象编程基础

    Python学习-第三天-面向对象编程基础 类和对象 简单的说,类是对象的蓝图和模板,而对象是类的实例.这个解释虽然有点像用概念在解释概念,但是从这句话我们至少可以看出,类是抽象的概念,而对象是具体的 ...

  9. Java学习之jackson篇

    Java学习之jackson篇 0x00 前言 本篇内容比较简单,简单记录. 0x01 Json 概述 概述:JSON(JavaScript Object Notation, JS 对象简谱) 是一种 ...

随机推荐

  1. [TYVJ] P1026 犁田机器人

    犁田机器人 背景 Background USACO OCT 09 2ND   描述 Description Farmer John為了让自己从无穷无尽的犁田工作中解放出来,於是买了个新机器人帮助他犁田 ...

  2. [原创]零基础R语言教程---第二课---R语言入门

    这节教程简单描述了R语言中常用的数据类型, 向量,字符串,矩阵,列表,数据框,以及附带了一个小例子 对于这节课所附带的例子需要做下列补充: 1.这个例子面向于对整列的数据进行预测 2.如果你需要求单行 ...

  3. Keil 中关于C语言编译生成汇编代码函数名规则

    在keil 中 C语言的函数有带参数和不带参数之分. 一般的资料里说fun(void)类型的函数不带参数,所以,keil编译器生成的汇编的调用地址(函数名) 为fun.这没有错.事实上,不管C语言的函 ...

  4. git:fatal the current branch master has no upstream branch

    git push的时候发生上述错误. git push -u "resp" master resp为git仓库的“地址” reference中由解决方案 http://blog.c ...

  5. java设计模式--结构型模式--适配器模式

    适配器模式 概述 将一个类的接口转换成客户希望的另外一个接口.Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作. 适用性 1.你想使用一个已经存在的类,而它的接口不符合你的需 ...

  6. 【转】Android(4.2) Sensors 学习——G-sensor,Gyroscope驱动移植

    原文网址:http://blog.csdn.net/nxh_love/article/details/11804841 本人对驱动可谓是一点不懂,鉴于公司目前高驱动的人手不够,所以我也只能两眼一抹黑硬 ...

  7. PhpForm表单相关的超全局变量操作

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. hdu 1561 The more, The Better_树状dp

    题目链接 题意:给你一棵树,各个节点都有价值(除根节点),从根节点出发,选择m个节点,问最多的价值是多小. 思路:很明显是树状dp,遍历树时背包最优价值,dp[i][k]=max{dp[i][r]+d ...

  9. JavaScript - 基于原型的面向对象

    JavaScript - 基于原型的面向对象 1. 引言 JavaScript 是一种基于原型的面向对象语言,而不是基于类的!!! 基于类的面向对象语言,比如 Java,是构建在两个不同实体的概念之上 ...

  10. Ajax请求安全性讨论 - Eric.Chen(转)

    Ajax请求安全性讨论 - Eric.Chen 时间 2013-07-23 20:44:00  博客园-原创精华区 原文  http://www.cnblogs.com/lc-chenlong/p/3 ...