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. XJOI网上同步训练DAY3 T1

    思路:看来我真是思博了,这么简单的题目居然没想到,而且我对复杂度的判定也有点问题.. 首先我们选了一个位置i的b,那一定只对i和以后的位置造成改变,因此我们可以这样看: 我们从前往后选,发现一个位置的 ...

  2. 使用ViewPager实现左右“无限”滑动的万年历

    有时候就是这样,研究一个问题,一开始想到了一个觉得可行的方案,然后去尝试:尝试了很久.很多次,已经要放弃了,关掉电脑心里 想这个需求没办法实现:在去上厕所的路上突然想到了一个点子,第二天一试,尼玛,搞 ...

  3. hdu4536-XCOM Enemy Unknown(爆搜)

    XCOM-Enemy Unknown是一款很好玩很经典的策略游戏. 在游戏中,由于未知的敌人--外星人入侵,你团结了世界各大国家进行抵抗.随着游戏进展,会有很多的外星人进攻事件.每次进攻外星人会选择3 ...

  4. Centos中安装code blocks

    CentOS下面安装Codeblocks不像Ubuntu下面那样轻松,可以直接在软件中心安装.这里好多信赖我们要自己安装,也不是很麻烦. 1.先安装gcc和gcc++,这个可以直接安装 # yum i ...

  5. python3-day2(基本回顾)

    1.作用域 1>外层变量可以被内层变更使用 2>内层变更不可以被外层使用 global nonlocal 2.对于Python,一切事物都是对象,对象基于类创建 3.练习 有如下值集合 [ ...

  6. SqlDependency不起作用

    今天使用SqlDependency,结果不起作用,失效,不管数据库怎么修改,这边都没反应,OnChange事件总是不执行,很奇怪.我打开msdn里的例子,代码复制出来,结果没问题,能执行,那剩下来的问 ...

  7. C库函数笔记

    一.string.h 1.memcpy 函数原型:void *memcpy(void *dest, const void *src, size_t n); 功能:从源src所指的内存地址的起始位置开始 ...

  8. mbed OS - ARM关于物联网(IoT)的战略布局

    关于IoT 在刚刚过去的ARMTECHCON2014(Santa Clara Convention Center)第1天会议,首要的keynote就是ARM针对建立物联网(InternetOf Thi ...

  9. Codeforces 67C Sequence of Balls 编辑距离 dp

    题目链接:点击打开链接 有一个交换操作比較特殊,所以记录每一个点距离自己近期的那个字符的位置 然后交换就相当于把第一行要交换的2个字符 之间的字符都删掉 把第二行要交换的2个字符 之间的字符都插入第一 ...

  10. js校验

    判空 function check(s) { return (s == null || typeof (s) == "undefined" || s == "" ...