java面向对象编程的四大特征:

1、抽象

2、封装

3、继承

4、多态

封装

//职员
class Clerk
{
public String name;
//private私有的
private int age;
private float salary; public Clerk(String name,int age,float sal)
{
this.name=name;
this.age=age;
this.salary=sal;
}
//通过一个成员方法去控制和访问私有的属性
public float getSal()
{
return this.salary;
}

java提供四种访问控制修饰符(控制方法和变量的访问权限):

1.公开级别:用public修饰,对外公开

2.受保护级别:用protected修饰,对子类和同一个包中的类公开

3.默认级别:没有修饰符号,向同一个包的类公开

4.私有级别:用private修饰,只有类本身可以访问,不对外公开

包-必要性

包的三大作用:

区分相同名字的类

当类很多时,可以很好地管理类

控制访问范围

包的打包命令:

package com.xxx

包的命名规范:小写字母

java中常用包:

java.lang.*         自动引入

java.util.*           工具包

java.net.*           网络开发包

java.awt.*           窗口工具包

包的引入:

inport  包;(如:import java.awt.*;)

继承

class Pupil
{
//定义成员属性
private int age;
private String name;
private float fee; //交费
public void pay(float fee)
 {
   this.fee=fee;
  }

继承解决类重复问题

所有的子类不需要重新定义属性和方法,只需要通过extends语句声明继承父类

class  子类 extends 父类

​私有属性不能被继承(private)

继承-注意

子类最多只能继承一个父类(指直接继承)

java所有类都是Object类的子类

JDK6中有202个包3777个类、接口、异常、枚举、注释和错误

开发时多使用jdk帮助文档

有些时候必须继承一些类来实现更多的功能:

package com.shun;
import javax.swing.*;
public class Demo2 extends JFrame { public static void main(String []args)
{
Demo demo2=new Demo2(); } public Demo2()
{
this.setVisible(true);
this.setSize(200,200);
}
}

方法重载&方法覆盖

方法重载注意事项:

方法名相同

方法的参数类型,个数,顺序至少有一项不同

方法返回类型可以不同

方法的修饰符可以不同

<只是返回类型不一样,不能够构成重载>

方法的覆盖(子类有一个方法与父类的名称、返回值、参数一样)

public class Demo3{
public static void main(String []args){
//创建一只猫
Cat cat1=new Cat();
cat.cry();
dog1.cry();
}
}
class Animal
{
int age;
String name; public void cry()
{
System.out.println("我是动物");
}
}
//猫猫类
class Cat extends Animal
{
//覆盖父类
public void cry()
{
System.out.println("猫猫叫");
}
}
//狗类
class Cat extends Animal
{
//覆盖父类
public void cry()
{
System.out.println("狗叫");
}
}

注意:

1.子类方法的返回类型、参数、方法名称要和父类方法的返回类型、参数方法名称完全一样,否则编译出错。

2.子类方法不能缩小父类方法的访问权限。(比如public不能被protected覆盖)

多态

package com.shun;
public class Demo5 { public static void main(String [] args){
//多态
/* Cat cat=new Cat();
cat.cry();
Dog dog=new Dog();
dog.cry();*/
Animal an=new Cat();
an.cry();
an=new Dog();
an.cry();
}
}
//动物类Animal
class Animal
{
String name;
int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name=name;
}
public int getAge() {
return age;
}
public void setAge(int age){
this.age=age;
}
//动物会叫
public void cry()
{
System.out.println("不知道怎么叫");
}
}
class Dog extends Animal
{
//狗叫
public void cry()
{
System.out.println("狗叫");
}
}
class Cat extends Animal
{
//猫自己叫
public void cry()
{
System.out.println("猫叫");}

多态注意事项:

java允许父类的引用变量引用它的子类的实例(对象)Animal animal=new Cat();

这种转换自动完成;

多态定义:一个引用(类型)在不同情况下的多种状态。

抽象类的必要性:

package com.test2;
public class Test { public static void main(String[] args) { }
}
abstract class Animal
{
String name;
int age;
//动物会叫
public void cry();
abstract public void cry(); }
//当一个类继承的父类是抽象类的话,需要我们把抽象类中的所有抽象方法全部实现
class Cat extends Animal
{
//实现父类cry
public void cry()
{
//do nothing
System.out.println("猫叫");
}
}

定义:

1、用abstract关键字来修饰一个类时,这个类就叫抽象类

2、用abstract关键字来修饰一个方法时,这个方法就是抽象方法

3、抽象方法在编程中用的不多,但在公司笔试时较常见

注意:

1、抽象类不能被实例化

2、抽象方法不一定要包含abstract方法

3、一旦包含abstract方法,则这个类必须声明为abstract

4、抽象方法不能有主体

接口:给出一些没有内容的方法,封装到一起,要使用时将这些方法写出来

<class  类名 implements 接口{

方法;

变量;

}

>

接口:体现程序设计多态和高内聚低耦合的设计思想

<当一个类实现了一个接口,就要求该类把这个接口的所有方法统统实现

interface Usb{

    //声明两个方法
//开始工作
public void start();
//停止工作
public void stop();
}
//编写了照相机类
class Camera implements Usb{
public void start(){
System.out.println("开始工作");
}
public void stop(){
System.out.println("停止工作");
}
}
class Phone implement Usb{
public void start(){
System.out.println("开始工作");
}
public void stop(){
System.out.println("结束工作");
}
}
//计算机
class Computer{ //开始使用usb接口
public void useUsb(Usb usb){
usb.start();
usb.stop();
}
}
//接口继承别的接口
class Base{
}
interface Tt{
}
interface Son extends Tt{
}
public class Demo4_2{
public static void main(String[] args){
System.out.println(Usb.a);
Computer computer=new Computer(); //创建Camera
Camera cameral=new Camera();
//创建Phone
Phone phone1=new Phone();
computer.useUsb(camera1);
computer.useUsb(phone1); }

JAVA(2)的更多相关文章

  1. Spark案例分析

    一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...

  2. 故障重现(内存篇2),JAVA内存不足导致频繁回收和swap引起的性能问题

    背景起因: 记起以前的另一次也是关于内存的调优分享下   有个系统平时运行非常稳定运行(没经历过大并发考验),然而在一次活动后,人数并发一上来后,系统开始卡. 我按经验开始调优,在每个关键步骤的加入如 ...

  3. Elasticsearch之java的基本操作一

    摘要   接触ElasticSearch已经有一段了.在这期间,遇到很多问题,但在最后自己的不断探索下解决了这些问题.看到网上或多或少的都有一些介绍ElasticSearch相关知识的文档,但个人觉得 ...

  4. 论:开发者信仰之“天下IT是一家“(Java .NET篇)

    比尔盖茨公认的IT界领军人物,打造了辉煌一时的PC时代. 2008年,史蒂夫鲍尔默接替了盖茨的工作,成为微软公司的总裁. 2013年他与微软做了最后的道别. 2013年以后,我才真正看到了微软的变化. ...

  5. 故障重现, JAVA进程内存不够时突然挂掉模拟

    背景,服务器上的一个JAVA服务进程突然挂掉,查看产生了崩溃日志,如下: # Set larger code cache with -XX:ReservedCodeCacheSize= # This ...

  6. 死磕内存篇 --- JAVA进程和linux内存间的大小关系

    运行个JAVA 用sleep去hold住 package org.hjb.test; public class TestOnly { public static void main(String[] ...

  7. 【小程序分享篇 一 】开发了个JAVA小程序, 用于清除内存卡或者U盘里的垃圾文件非常有用

    有一种场景, 手机内存卡空间被用光了,但又不知道哪个文件占用了太大,一个个文件夹去找又太麻烦,所以我开发了个小程序把手机所有文件(包括路径下所有层次子文件夹下的文件)进行一个排序,这样你就可以找出哪个 ...

  8. Java多线程基础学习(二)

    9. 线程安全/共享变量——同步 当多个线程用到同一个变量时,在修改值时存在同时修改的可能性,而此时该变量只能被赋值一次.这就会导致出现“线程安全”问题,这个被多个线程共用的变量称之为“共享变量”. ...

  9. Java多线程基础学习(一)

    1. 创建线程    1.1 通过构造函数:public Thread(Runnable target, String name){}  或:public Thread(Runnable target ...

  10. c#与java的区别

    经常有人问这种问题,用了些时间java之后,发现这俩玩意除了一小部分壳子长的还有能稍微凑合上,基本上没什么相似之处,可以说也就是马甲层面上的相似吧,还是比较短的马甲... 一般C#多用于业务系统的开发 ...

随机推荐

  1. Codeforces Round #372 (Div. 2) C. Plus and Square Root

    题目链接 分析:这题都过了2000了,应该很简单..写这篇只是为了凑篇数= = 假设在第级的时候开方过后的数为,是第级的系数.那么 - 显然,最小的情况应该就是, 化简一下公式,在的情况下应该是,注意 ...

  2. 前端面试题2016--HTML

    本文由我收集总结了一些前端面试题,初学者阅后也要用心钻研其中的原理,重要知识需要系统学习.透彻学习,形成自己的知识链.万不可投机取巧,临时抱佛脚只求面试侥幸混过关是错误的!也是不可能的!不可能的!不可 ...

  3. 总结js中数据类型的bool值及其比较

    首先需要知道的是,js中有6个值为false,分别是: 0, '', null, undefined, NaN 和 false, 其他(包括{}, [], Infinity)为true. 可以使用Bo ...

  4. 160809208沈昊辰c语言程序设计实验选择结构设计

    <C语言程序设计>实验报告 学 号 160809208 姓 名 沈昊辰 专业.班 计科16-2班 学    期 2016-2017 第1学期 指导教师 黄俊莲 吴喆 实验地点 C区二层机房 ...

  5. windows本地script脚本恶意代码分析(带注释)

    //经过样本分析和抓取,该恶意程序是款下载者木马. //不懂的可以百度百科. http://baike.baidu.com/link?url=0dNqFM8QIjEQhD71ofElH0wHGktIQ ...

  6. bzoj 3611: [Heoi2014]大工程

    #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #d ...

  7. 【Python扩展阅读【转】】字符串的方法及注释

      capitalize()   把字符串的第一个字符改为大写   casefold()   把整个字符串的所有字符改为小写   center(width)   将字符串居中,并使用空格填充至长度wi ...

  8. 个人记录比较好的css样式

    background:#835838;  filter:alpha(opacity=70);-moz-opacity:0.7;opacity:0.8; 设置背景颜色为透明! IE6. IE7.IE8. ...

  9. Codeforces Round #370 (Div. 2) E. Memory and Casinos (数学&&概率&&线段树)

    题目链接: http://codeforces.com/contest/712/problem/E 题目大意: 一条直线上有n格,在第i格有pi的可能性向右走一格,1-pi的可能性向左走一格,有2中操 ...

  10. Java学习之多态

    多态的概念 多态==晚绑定. 不要把函数重载理解为多态. 因为多态是一种运行期的行为,不是编译期的行为. 多态:父类型的引用可以指向子类型的对象. 比如 Parent p = new Child(); ...