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. wordpress博客搬家心得

    更改SSH的连接端口和登录账户 在SSH的配置文件,/etc/ssh/sshd_config中找到Port 22(一般情况下是22, 根据服务器提供商的设置而不同)更改为你自己希望的端口. 至于登录账 ...

  2. windows下编译firefox

    可以自己定制下.估计很简单..... 官方文档扫一遍: https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Build_I ...

  3. 字符串转换为float<1>

    zjtest7-frontend:/usr/local/logstash-2.3.4/config# cat g01.conf input {stdin{}} filter { grok { matc ...

  4. WebDriver使用IE浏览器

    开始使用Selenium2之后就一直在用FireFox,因为文章上都说webdriver对firefox支持的最好,同时也很好上手,试了一下就可用了,也就没再用其他浏览器,不过最近遇到了一个问题,是我 ...

  5. Find the Duplicate Number 解答

    Question Given an array nums containing n + 1 integers where each integer is between 1 and n (inclus ...

  6. Android应用开发学习之AlertDialog对话框

    作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz 本文中我们通过一个例子来看AlertDialog对话框的实现,其运行效果如下: 主布局文件main.xml内容如下: ...

  7. DoTween学习笔记(一)

    DOTween是一个快速,高效,完全统一的类型安全的对象属性动画引擎,免费开源,大量的高级特性. DoTween兼容Unity4.5以上的版本,支持的平台: Win, Mac, Unity WebPl ...

  8. Unity 代码检测单击,双击,拖放

    今天小伙伴问我如何自己写一段代码检测 单击 双击 和 拖放.于是就写了这段代码O(∩_∩)O~ 代码如下: using UnityEngine; using System.Collections; p ...

  9. CBitmap,HBitmap,Bitmap区别及联系

    加载一位图,可以使用LoadImage: HANDLE LoadImage(HINSTANCE hinst,LPCTSTR lpszName,UINT uType,int cxDesired,int ...

  10. Centos 7 python升级(2.7.5-》2.7.11)

    1.安装升级GCC yum install gcc* openssl openssl-devel ncurses-devel.x86_64  bzip2-devel sqlite-devel pyth ...